线上项目黑客入侵记录
[2018-3更新]
黑客攻击时间
黑客最爱发起攻击时间是节假日和周末等开发人员放假休息的时候,这时候对黑客攻击的防范和处理都比较不及时。
黑客最常见攻击入口是网站注入攻击,攻击目的是非法读取、篡改、添加、删除数据库中的数据;比如篡改金钱相关的各种数值、下载用户信息、销毁数据等!
程序漏洞根源
WEB注入攻击产生的原因是对用户输入没有做注入过滤处理、不合理的数据库操作处理如没有使用参数化命令而是直接拼凑SQL语句等
应对攻击的解决方案
服务器防护措施:Nginx, Apache, IIS和系统访问等日志一定要开启,并且分段保存,否则一个文件十几G,很费时间。
数据备份防护措施:节假日增加数据库备份、源码备份的频率,以备随时从灾难中恢复生产。重要的数据表如用户表或资金表等可以额外增加备份频率。
代码防护措施:字符串长度验证和单引号等SQL符号进行转义、对接收的数值参数进行类型格式化、使用参数化SQL命令或存储过程、对应用异常信息给出尽可能少的提示、服务端处理数据校验。
数据内容防护措施:对机密信息不要明文存放
第三方防护措施:使用SQL注入工具进行网站漏洞检测、使用360网站安全检测等第三方服务进行网站漏洞检测
网站后台帐号登录安全措施:开启手机验证码功能、使用email或手机等作为用户名、禁止使用弱密码。(黑客经常尝试的后台用户名:admin, guanli, jiesuan, caiwu, adm, houtai, {域名}, {用户ID}, {APP名称})
开发注意事项
1. 与数据库交互的入口,要做好IP请求限制和数据缓存处理,比如黑客用for无限循环请求报表统计等数据库资源消耗很大的程序,一下子就把数据库拖垮了。
2. 黑客发现漏洞后,可能删除数据或者篡改数据,因此,资金表务必定时备份,否则发现数据被破坏,却没有还原点,就很惨了。
3. 日志文件可查阅,服务器日志文件一般存放在一个目录内,文件数量很容易膨胀到无法查询,因此,日志需按年/月/日/时+分类存放,SQL语句、资金相关接口、非法请求的日志要独立存放。
4. 数据表定时任务备份(db_backup.php)任务。
5. 汇总数据定时播报任务(notify.php),数据安全要做好重要数据信息的日志报告,比如用户资金增减排行榜报告、每个数据表增量统计报告,可以通过email、短信等发送给指定用户,也可以保存到服务器本地指定位置方便查阅。
6. 用户资金变动,要做好资金字段上下文日志记录,比如变动前资金多少,变动后资金多少,方便查证数据篡改,可以从变更日志中批量推断出用户某个时间点的具体真实数值。
7. 每个入口应该有个全局方法,可以单纯对用户输入的数据做一次注入检测,当检测到有注入攻击时,记录到日志中。
8. 对用户输入来源做好数据验证,比如表单提交、ip地址等,防止通过url注入或构造虚假IP注入攻击。
注入攻击检测代码
function sql_injection($str){ // from和where前面要有空格,否则可能会误报 $pattern = "/(select[\s])|(insert[\s])|(update[\s])|(delete[\s])|([\s]from[\s])|([\s]where[\s])/i"; if (preg_match($pattern, $str, $match)) { // 记录到日志文件 // log($str); die("SQL Injection denied!"); } }
参考文章
SQL注入(SQL Injection)案例和防御方案
http://www.cnblogs.com/sochishun/p/6994918.html
PHP用户输入安全过滤
http://www.cnblogs.com/sochishun/p/8459562.html
XSS/CSRF跨站攻击和防护方案
http://www.cnblogs.com/sochishun/p/6993997.html
DDoS攻击、CC攻击的攻击方式和防御方法
http://www.cnblogs.com/sochishun/p/7081739.html
网站常见的入侵手段和防御方法
http://www.cnblogs.com/sochishun/p/7007959.html
版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。 |