zoukankan      html  css  js  c++  java
  • PHP安全编程:不要让不相关的人看到报错信息

    没有不会犯错的开发者,PHP的错误报告功 能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一 点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出 错日志文件的保存路径。

    由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把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 ?>

    http://php.net/manual/ini.php 对php.ini的选项配置作了详尽的说明。

    set_error_handler() 函数

    PHP还允许您通过 set_error_handler( ) 函数指定您自已的出错处理函数:

    1 <?php
    2 set_error_handler('my_error_handler');
    3 ?>

    上面程序指定了您自已的出错处理函数my_error_handler()。下面是一个实际使用的示例:

    01 <?php
    02  
    03 function my_error_handler($number, $string, $file, $line, $context)
    04 {
    05   $error = "=  ==  ==  ==  == PHP ERROR =  ==  ==  ==  == ";
    06   $error .= "Number: [$number] ";
    07   $error .= "String: [$string] ";
    08   $error .= "File:   [$file] ";
    09   $error .= "Line:   [$line] ";
    10   $error .= "Context: " . print_r($context, TRUE) . " ";
    11  
    12   error_log($error, 3, '/usr/local/apache/logs/error_log');
    13 }
    14  
    15 ?>

    PHP 5还允许向set_error_handler( )传递第二个参数以限定在什么出错情况下执行出定义的出错处理函数。比如,现在建立一个处理告警级别(warning)错误的函数:

    1 <?php
    2 set_error_handler('my_warning_handler', E_WARNING);
    3 ?>

    PHP5还提供了异常处理机制,详见http://php.net/exceptions

    学习转自:http://www.nowamagic.net/librarys/veda/detail/1980

  • 相关阅读:
    mixer: 一个用go实现的mysql proxy
    【Unity Shaders】Using Textures for Effects——打包和混合textures
    sharding jdbc:分库、分表;读写分离;
    springboot(四):thymeleaf使用详解
    spring boot(三):spring data jpa的使用
    深入理解Java虚拟机JVM
    Java入门(4)内部类
    .NET 定时器类及使用方法
    JDK源码
    Java入门(3)面向对象三大特性:封装、继承、多态
  • 原文地址:https://www.cnblogs.com/jami918/p/3200909.html
Copyright © 2011-2022 走看看