XSS 和 CSRF

介绍两种最常见的针对 web 应用的攻击方式。

XSS (Cross-site scripting) 跨站脚本攻击

攻击者能够利用跨站脚本漏洞来绕过访问控制(access control),比如单源策略(same-origin policy)。
单源策略:
如果一个站点的内容有权限访问浏览器上的某些资源(比如 cookie),那么来自这个站点的所有内容都可以共享这些权限。

跨站点脚本攻击使用基于 Web 的应用程序,其服务器或其所依赖的插件系统中的已知漏洞。利用其中之一,攻击者会将恶意内容插入到受感染网站传递的内容中。包含恶意内容的网页会被客户端的浏览器认为是来自可信任的源,因此拥有和该站点正规内容一样的权限。通过寻找将恶意脚本注入网页的方法,攻击者可以获得对敏感页面内容,会话cookie以及浏览器代表用户维护的各种其他信息的较高访问权限。跨站点脚本攻击是代码注入的一种情况。

预防的方法:对任何将会展示在页面上的用户输入内容进行 html 转义。

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

举个例子:假设 A 站点的用户想要删除自己的所有文章,只需要点击一个按钮,按钮上是一个请求到 A 站点的链接(比如 http://a.com/delete/all/user_id)。那么只需要在 B 站点显示的页面上带上这个链接,诱导用户点击后,便能成功删除该用户的所有文章(白写那么多文章了。。虽然别人眼里不值什么东西。。),当然前提还需要用户此时在 A 站点上是登录状态(即浏览器还保留有有效的 A 站点 Cookie)。

注意: ajax 请求是无法跨域的,除非能在 A 站点上进行相应设置(那还要 CSRF 干啥。。)。

CSRF 在用户不知情的情况下,利用网站来传输命令给信任用户的网页应用。与 XSS 不同,XSS 利用了站点对用户的信任,CSRF 利用了浏览器对站点的信任(上例中的站点 A)。

你可能感兴趣的:(前端,xss,csrf)