网站安全

前几天和别人讲了下安全,后面反思了一下,讲的实在太浅薄,今天决心在此重来一遍,且以后会持续更新这篇。

案例一

mysql注入

解决方案

pdo预处理 参数绑定

mysqli_escape_string

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。


案例二

xss攻击

cookie中设置http_only  http://php.net/manual/en/function.setcookie.php

ip+cookie绑定 更换ip时重新认证,可记录在服务器,存在数据库中

客户端数据提交设置 htmlspecialchars  http://php.net/manual/en/function.htmlspecialchars.php

用户填写的数据展现之前 再做最后一次检查 (如对安全性要求极高,后台管理部分应作此限制,前台话看页面压力自己取舍)


案例三

用户文件存储

用户文件存储不能简单用uid作为文件名才能存储,如头像和认证图片,因为有恶意用户会恶意去猜测读取地址,

对用户的文件名采用md5 +盐之类的或者函数 http://php.net/manual/en/function.uniqid.php

对接口进行监控,访问过频繁,限制ip访问 且接口报警


案例四

用户密码找回

密码找回验证码有过期时间限制

密码找回链接有使用次数限制和过期时间限制







nickname
content