XSS
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS。
跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。
XSS攻击流程
以用户注册表单提交为例,如下:
<form method="post" action="http://www.abc.com/user/registry">
用户:<input type="text" name="username" value="ricky" /><br />
密码:<input type="password" name="password" value="12345" /><br />
<input type="submit" value="提交" />
</form>
如果,用户输入username的不是一个正常的字符串,而是:
"/><script>alert("xss")</script><!-
此时,页面变成下面的内容,在输入框input的后面带上了一段脚本代码。
<input type="text" name="username" value="ricky"/><script>alert("haha")</script><!-"/>
当我们原封不动的在页面上显示用户昵称 页面会弹出对话框,并不会造成什么危害,攻击的威力取决于用户输入了什么样的脚本,只要稍微修改,便可使攻击极具攻击性。
譬如一下论坛网站,当攻击者提交恶意的javascript代码的评论信息或者反馈信息(这些信息,正常客户端没有做xss校验,会存在客户端注入问题),所有访问者访问该内容时,都会执行这段恶意的javascript代码。
如何防范XSS攻击
前端,服务端需同时对HTML标签做转义处理。将其中的”<”,”>”等特殊字符进行转义编码。
CSRF
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。
CSRF攻击流程
- 用户登录受信任网站A;
- 在不退出网站A的情况下,访问危险网站B(攻击者网站或攻击者挂马的网站)。
例如:
如何防范CSRF攻击
1、token机制
在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。
2、referer检测
在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址,如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。
但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。