php安全攻防(php网站安全防护)

PHP代码安全、XSS、SQL注入等对于各类网站的安全非常有用,尤其是UGC(用户生成内容)网站、论坛和电商网站,往往是XSS和SQL注入的重灾区。这里简单介绍一下一些基本的编程要点。与系统安全相比,PHP安全防范需要程序员更加小心用户输入的各种参数。为了PHP编译过程中的安全,建议安装Suhosin补丁。必须安装PHP安全补丁。INI安全设置register_global=official_quotes_gpc=officialisplay_error=Offlog_error=On#allow_fopen=Offexpose_php=OFFOPEN_BASEDIR=SAFE_mode=ondisable_function=Exec、System、Passthru、Shell_exec、EscapeShellarg、EscapeShellcmd、Proc_Close、Proc_open、DL、Popen、Show_Source、get_cfg_varsafe_mode_include_dir=dbSQLpre-pre-pre-pre-pre-处理mysql_real_escape_string(很多PHPer仍然依赖addslashes来防止SQL注入,但是这种方法对于中文编码来说还是有问题的。addslashes的问题在于黑客可以使用0xbf27来替换单引号。0xbf27在GBK编码中不是合法字符,所以addslashes只要把0xbf5c27改成有效的多字节字符即可,0xbf5c仍然会被视为单引号,具体请看这篇文章)。使用mysql_real_escape_string函数时还需要指定正确的字符集,否则仍然可能出现问题。准备+执行(PDO)ZendFramework可以使用DB类的quote或quoteInto。这两种方法都是根据各种数据库来实现的。与mysql_real_escape_string只能用于处理mysql用户输入不同,它可以在不保留HTML标签的情况下使用。下面的方法strip_tags,删除字符串中所有html标签htmlspecialchars,只转义“”、“”、“;”、“'”字符htmlentities,转义所有html。在必须保留HTML标签的情况下,可以考虑使用以下工具:HTMLPurifier:HTMLPurifier是一个用PHP.PHP编写的符合标准的HTML过滤器库HTMLSanitizer:从HTML代码中删除不安全的标签和属性htmLawed:PHP代码来净化过滤HTML使用is_uploaded_file和move_uploaded_file函数以及HTTP_POST_FILES[数组上传文件。并通过去掉上传目录的PHP解释功能来阻止用户上传php脚本。在ZF框架下,可以考虑使用File_upload模块Session。不要依赖cookie进行核心验证来安全处理Cookie和表单。重要信息需要加密。在FormPost之前对传输的数据进行哈希处理。例如,您发送的表单元素如下:程序代码prelang='php'inputtype='hidden'name='H[name'value='?phpecho$Oname?'/inputtype='隐藏'name='H[age'value='?phpecho$Oage?'/?php$sign=md5('name'.$Oname.'age'.$Oage.$secret);inputtype='hidden'name='hash'value='?phpecho$sign?''/POST返回后参数的验证程序代码

复制code代码如下:

php安全攻防(php网站安全防护)

$str='';

foreach($_POST['H'as$key=$value){

$str.=$key.$value;

}

if($_POST['hash'!=md5($str.$secret)){

echo'隐藏表单数据已修改';出口;

}

PHP安全检测工具(XSS和SQL插入)Wapiti-Web应用安全审核员(Wapiti-紧凑型站点漏洞检测工具)(SQL注入/XSS攻击检测工具)安装/使用方法:apt-getinstalllibtidy-0.99-0python-ctypespython-utidylibpythonwapiti.源代码缺陷分析工具)安装:apt-getinstalldefault-jdkRemotePHPVulnerabilityScanner(自动化PHP页面缺陷分析、XSS检测)功能更强)PHPIDS-PHP入侵检测系统