web安全之php
2016-06-28 22:28:56 小德 PHP 访问次数 997


web开发安全重要性不赘言,以下是常见的安全tips。


1、过滤输入:永远不要相信不是程序自己生成的数据,包括表单、文件、数据库。

a、白名单;

b、按规则匹配正则,或者长度等校验;

c、跨站脚本(XSS),htmlspecialchars()把html标签转义,htmlentities();

d、sql注入:一个是pdo绑定参数;addslashes(),添加预定义的反斜杠。


2、转义输出:
a、htmlentities(),strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
b、mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。pdo绑定参数。
 
c、文件名:禁止远程文件访问;realpath()==》解析特殊标记比如. \.. &basename()=>返回部分文件名路径;检查文件名,open_basedir()限制超出网站目录的文件系统访问。
检查相对路径。

3、会话固定:

防止拿到会话标识劫持攻击。
Session_regenerate_id(true);//登录成功后指派新的随机标识符。

4、文件上传:
不要相信浏览器提供的文件名,要自己生成唯一的文件名来实际调用文件。注意文件名保证唯一。时间戳+微秒,rand();
php.ini  post_max_size 配置文件处理的最大大小。
文件目录权限管理;
管理会话文件,Session文件。
php文件放在根目录之外的目录,配置禁止网页服务器拒绝这些文件的请求,一个更好的方法是总是防止下载.php的php源码。

5、php代码:
eval(),里面不要放用户输入的数据。intval(),floatval()等。
关闭危险函数,exec(),system(),passthru,popen().