PHP安全新闻早8点_1122

//2011-11-22 星期二 
//插入篇----Php程序员角度看安全 
//今天全局我们站在Php程序员的角度看待问题 
//以及解决问题 
结论:一切的输入都是有害的. 
//参考Php安全新闻早8点(2011-11-12 星期六) 
[url]http://hi.baidu.com/micropoor/blog/item/f200689bf907af56d1135ec6.html[/url] 
既然是一切的输入都是有害的,那么就从输入输出讲起。 
################################################## 
1.接受任何变量的时候,都请记住,是有害的开始。确定用户输入的变量类型,如整形,字符串型。可以使用(int)或者(intval) 
函数强制转换。字符串可以考虑使用addslashes 或 mysql_escape_string(如果考虑数据库编码请连接数据库后使用mysql_real_escape_string更安全。 
针对GBK等编码,使用该函数能够防范目前很多GBK编码爆出的注入漏洞) 
2.数据在输出时候的处理。可以考虑strip_tags做过滤。或者使用 htmlspecialchars 进行html标签转义并且安全输出。切记做好部分标签的转义输出 
例如:<script><iframe><object><style>等。 
3.关闭关闭 register_global 选项,初始化所有变量,防止调用未定义变量notice错误。 
4.开启 safe_mode,同时设置 open_basedir, safe_mode_include_dir,safe_mode_exec_dir 等选项 
5.关闭一些危险函数。或者不使用函数。例如:eval、phpinfo  
6.move_uploaded_file来操作上传的文件,不是使用copy图方便。 
7.库文件(.inc)和数据文件(数据信息,配置信息,sqlite数据库等)不要与web目录放在一起 
8.包含文件的时候,记得这两个函数。realpath 和 basename 
9.关于urldecode函数参考:Php安全新闻早8点(2011-11-18 星期五) 
[url]http://hi.baidu.com/micropoor/blog/item/f187eae306a5acc9b21cb151.html[/url] 
10.安全使用intval函数 
11.总结: 
注意执行系统命令函数:system, passthru, shell_exec, exec, popen, proc_open 
注意文件包含与生成函数:require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite, 
注意代码执行与加密函数:eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13  

  

posted @ 2011-11-20 10:06  noevil  阅读(467)  评论(0编辑  收藏  举报