关于最近网站安全状况,看下乌云上某大厂的漏洞列表就知道了.
触目惊心吧,这仅仅是被曝光的,未被曝光的就更不好说了…
作为一名程序员,掌握的一些基本web安全知识,是很有必要的,下面列举一些常见的安全漏洞和对应的防御措施。文笔有限,见笑了。
CSRF 攻击
CSRF的全称是Cross Site Request Forgery,就是跨站点伪造请求攻击。 简单理解:Bad guy盗用你的身份,做桌下交易。详细原理看 Cross Site Request Forgery
最有效的措施,对敏感操作增加CSRF Token验证并尽量采用POST请求方式(虽然GET 也可以增加Token验证)。
XSS攻击
XSS攻击可以说最常见最严重的漏洞攻击了。
XSS的全称是Cross-site Scripting,就是跨站脚本攻击。主要分为非存储型XSS(反射型)和存储型XSS. 详细介绍看WIKI吧: Cross-site scripting
SQL注入攻击
SQL注入这种老掉牙的攻击手段,我就不多介绍了。
最简单的防御措施,使用预编译方式绑定变量:
正确地使用Cookie
合理设计一个cookie自动登录方案
- cookie保存base64 encode(username|sequence|token)的value。
- 服务器使用Redis的Hashs结构保存以下这几个值。
- 如果expireTime没到而且username,sequence,token均相同,登录成功。
- 如果expireTime没到,username和sequence相同,token不同,但IP相同和userAgent不同,登录成功。为什么要这样的设计?因为同一用户可能会使用的不同设备/浏览器登录。
- 其余情况均登录失败,并清空登录cookie。
- 成功登录后,服务器update token,同时更新cookie。
- 修改密码/点击退出,更新服务器端的token和sequence。
- 对于敏感操作(如修改个人私隐信息,Email,password等)需要输入密码。
数据安全
对密码采用MD5/SHA(salt+password)
进行HASH,salt是一串字符,为防止Rainbow Table 破解用的, salt应该放在一个隐秘的地方(某处代码或配置文件中)。
完善的日志机制
独立安全相关的log,方便追查和事后分析。
————下面2项可能偏运维一点,但程序员还是觉得有必要了解————–
服务器运维配置
iptables 搞起, 该屏蔽就屏蔽,该开放的IP就开放。
ddos攻击
一般来说,防御DDos的攻击是比较难,常见的DDOS方式较多(网络层DDOS、应用层DDOS等)。
- 增加anti-spam 机制
- 限制IP请求频率, 结合ip+cookie定位一个client
- 调小Timeout, KeepAliveTimeOut, 增加MaxClients
- 增加容灾机器,优化网站性能。
- 合理配置防火墙。
转自:http://kenny7.com/2013/04/web-security-knowledge.html
原文链接:http://www.ttlsa.com/safe/coder-should-know-web-safe/
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17263