PHP安全编程:不要让不相关的人看到报错信息(转)
2013-07-29 16:36
555 查看
没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。
由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。
所有的出错报告级别可以在任意级别进行修改,所以您如果使用的是共享的主机,没有权限对php.ini,httpd.conf,或 .htaccess等配置文件进行更改时,您可以在程序中运行出错报告级别配置语句:
http://php.net/manual/ini.php 对php.ini的选项配置作了详尽的说明。
上面程序指定了您自已的出错处理函数my_error_handler()。下面是一个实际使用的示例:
PHP 5还允许向set_error_handler( )传递第二个参数以限定在什么出错情况下执行出定义的出错处理函数。比如,现在建立一个处理告警级别(warning)错误的函数:
view source
print?
PHP5还提供了异常处理机制,详见http://php.net/exceptions
由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。
所有的出错报告级别可以在任意级别进行修改,所以您如果使用的是共享的主机,没有权限对php.ini,httpd.conf,或 .htaccess等配置文件进行更改时,您可以在程序中运行出错报告级别配置语句:
1 | <?php |
2 |
3 | ini_set ( 'error_reporting' ,E_ALL | E_STRICT); |
4 | ini_set ( 'display_errors' , 'Off' ); |
5 | ini_set ( 'log_errors' , 'On' ); |
6 | ini_set ( 'error_log' , '/usr/local/apache/logs/error_log' ); |
7 |
8 | ?> |
set_error_handler() 函数
PHP还允许您通过 set_error_handler( ) 函数指定您自已的出错处理函数:1 | <?php |
2 | set_error_handler( 'my_error_handler' ); |
3 | ?> |
01 | <?php |
02 |
03 | function my_error_handler( $number , $string , $file , $line , $context ) |
04 | { |
05 | $error = "=========\nPHP ERROR\n=========\n" ; |
06 | $error .= "Number: [$number]\n" ; |
07 | $error .= "String: [$string]\n" ; |
08 | $error .= "File: [$file]\n" ; |
09 | $error .= "Line: [$line]\n" ; |
10 | $error .= "Context:\n" . print_r( $context ,TRUE) . "\n\n" ; |
11 |
12 | error_log ( $error ,3, '/usr/local/apache/logs/error_log' ); |
13 | } |
14 |
15 | ?> |
view source
print?
1 | <?php |
2 | set_error_handler( 'my_warning_handler' ,E_WARNING); |
3 | ?> |
相关文章推荐
- PHP安全编程:不要让不相关的人看到报错信息
- PHP安全编程:不要让不相关的人看到报错信息
- PHP安全编程之不要让不相关的人看到报错信息
- PHP安全编程:不要让不相关的人看到报错信息
- PHP安全编程:不要暴露数据库访问权限
- PHP安全编程之不要暴露数据库访问权限
- 【Android平台中的安全编程】の #00-不要在外部存储(SD卡)中存放未加密的敏感信息
- PHP安全编程:不要暴露数据库访问权限
- PHP安全编程之HTTP请求欺骗
- PHP安全编程之session劫持的防御
- PHP安全编程:跨站脚本攻击的防御(转)
- PHP安全编程:网站安全设计的一些原则
- PHP安全编程:shell命令注入(转)
- PHP安全编程
- PHP安全编程:HTTP请求欺骗
- PHP安全编程:阻止文件名被操纵
- Django信息安全相关之CSRF和XSS
- PHP安全编程:主机文件目录浏览
- PHP获取音频文件的相关信息
- PHP获取客户端、PHP获取服务器相关信息