屏蔽php显示错误信息+sql防注入常用函数
屏蔽php显示错误信息
那是因为php.ini中关闭了错误显示,将错误写成了文件,这是人为设置的结果
display_errors =on就好了。
当PHP启动的时候,它将在Web服务器标准头信息中添加PHP版本号信息。如果希望关闭此功能,可以将expose_php设置为false。这项功能非常有用,例如,可以在Web服务器上屏蔽此信息以防范潜在的黑客攻击。
expose_php = On
不过不显示错误倒安全点,建议调试时打开,然后提供服务时关闭。
提供一点资料给你:
display_errors = On
php缺省是打开错误信息显示的,我们把它改为:
display_errors = Off
关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我们自己有用,可以让它写到指定文件中去,那么修改以下:
log_errors = Off
改为:
log_errors = On
以及指定文件,找到下面这行:
;error_log = filename
去掉前面的;注释,把filename改为指定文件,如/usr/local/apache/logs/php_error.log
error_log = /usr/local/apache/logs/php_error.log
这样所有的错误都会写到php_error.log文件里。
sql防注入常用函数
1.
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- NULL
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
//判断magic_quotes_gpc状态
if (@get_magic_quotes_gpc ()) {
$_GET = sec ( $_GET ); //sec()是自定义方法,不用太纠结
$_POST = sec ( $_POST );
$_COOKIE = sec ( $_COOKIE );
$_FILES = sec ( $_FILES );
}
addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截, 可以用于单字节字符串的处理。
2.
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 & " (双引号)成为 " ' (单引号)成为 ' < (小于)成为 < > (大于)成为 >
提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。
3.
多字节字符用mysql_real_escape_string()或mysql_escape_string()
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
\x00
\n
\r
\
'
"
\x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。 提示: 可使用本函数来预防数据库攻击。
mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用; 否则只能用 mysql_escape_string
两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
mysql_real_escape_string 函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。
屏蔽php显示错误信息+sql防注入常用函数相关推荐
- SQL防注入程序 v1.0
/// ***************C#版SQL防注入程序 v1.0************ /// *使用方法: /// 一.整站防注入(推荐) /// 在Global.asax.cs中查找App ...
- PHP安全、Sql防注入安全汇总
利用Mysqli和PDO 产生原因 主要就是一些数据没有经过严格的验证,然后直接拼接 SQL 去查询.导致漏洞产生,比如: $id = $_GET['id']; $sql = "SELECT ...
- PHP SQL防注入
参考资料: PHP中防止SQL注入的方法 php操作mysql防止sql注入(合集) PDO防注入原理分析以及使用PDO的注意事项 php SQL 防注入的一些经验 如何在PHP中防止SQL注入? P ...
- php mysql 500错误日志_服务器出现500错误的时候,让PHP显示错误信息
用PHP开发程序时,如果服务器出现500的时候,如果无法知道究竟是什么原因,就无法进行调试. 要让PHP显示错误信息,可以从PHP配置文件 (php.ini)或PHP程序文件入手,另外,如果与IIS整 ...
- Ajax.net显示错误信息
<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat=&q ...
- java错误页面显示错误信息_Struts2在JSP页面中显示错误信息和提示信息的方法
Struts2在JSP页面中显示错误信息和提示信息的方法主要有以下四种. 注意:以下四种方法均需要使Action类继承ActionSupport类. 一.域级错误信息 ①重写Action中的valid ...
- 方立勋_30天掌握JavaWeb_JDBC、SQL防注入(一)
JDBC简介 数据库驱动 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC. JDBC全称为:Java Data Base Connectivity(java ...
- iis下的php不显示报错信息,IIS环境下 PHP无法显示错误信息怎么办
IIS环境下 PHP无法显示错误信息的解决办法:1.更改PHP的配置文件[php.ini]:2.在网站的根目录下面新建一个[web.config]文件,并添加相应代码:3.安装组件[VCRUNTIME ...
- 为什么mysql 5.7.24启停不显示错误信息?log-error_verbosity参数
关键词:log-error_verbosity ,mysql启停没有信息,mysql启停不显示错误信息,mysql不显示启停信息 原因就是因为 log-error_verbosity = 2 被设置成 ...
最新文章
- Java面试题之多线程同步和互斥有几种实现方法,都是什么?
- Ymal格式转Properties格式
- 三类医械计算机系统要求,三类医疗器械计算机管理系统要求
- 云炬Android开发笔记 1项目架构设计与模块分解
- android settings源代码分析(1)
- android一键分享功能不使用任何第三方sdk
- SQLite的使用(二):数据增删改查
- html跨页面提取表单,HTML页面提取参数如何通过表单传递?
- 将json转为map的两种方式及前后端开发json Api设计规范总结
- Uber开源深度概率编程语言Pyro,AI实验室蛰伏一年首现身
- LVM管理和ssm存储管理器使用
- 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
- matlab专业代做hslogic,matlab代做hslogic
- 谷歌浏览器怎么调试php,如何简单快速调试高大上的谷歌浏览器
- VPS安装msf教程
- 错误:1 error and 0 warnings potentially fixable with the `--fix` option. 报错问题解决方法
- 【转载】太厉害了,终于有人能把TCP/IP 协议讲的明明白白了
- OV7725摄像头的彩色图像采集原理与液晶显示《一》
- git 删除添加的远程地址
- js动态修改浏览器title标题