XSS、CSRF攻击与防范

一、XSS攻击

  XSS攻击全称跨站脚本攻击,是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者 JavaScript 进行一种攻击。攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

  例子:如果A用户评论 [hello world] 提交到服务器,B用户看到这条评论的时候一切正常。但如果C用户评论 [<script>console.log(document.cookie)</script>],那么当B用户访问这条评论所在的界面是,这串js代码就会在B用户的浏览器执行,输出cookie的值。这样就构成了XSS攻击。

  防范:

                1)使用 XSS Filter

      针对用户提交的数据,只接受规定的长度或内容的提交,过滤掉其他的输入类型。例如表单提交年龄只接受 int 类型,过滤掉特殊的HTML标签<script>等,过滤 JS 事件例如 onclick, onfocus等。

     2)对HTML标签插入的不可信数据进行 HTML Entity 编码。

       

 

 

       3)JavaScript 编码 将 \ 转成 \\,将/ 专程/\,将半角符号转成全角符号  

       4)HTTP Only Cookie 许多XSS攻击是为了得到用户的cookie信息,将重要的cookie信息标记为 http only,这样的话当浏览器想服务器端发起请求时就会带上cookie,但是在脚本中却不能访问cookie信息,避免了XSS攻击利用js代码document.cookie获取cookie信息。

 

 

 

二、CSRF攻击

  CSRF全称跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求。

  原理:

    • 用户C打开访问受信任网站A,输入用户名和密码请求登陆网站A
    • 在用户信息通过验证后,网站A产生cookie信息并返回给浏览器,此时用户登陆网站A成功,并可以正常发送请求到网站A。
    • 用户在未退出网站A之前,在同一浏览器中,打开了一个TAB页访问网站B
    • 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
    • 浏览器咋接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息向网站A发出请求,网站A并不知道该请求由B发起,所以会根据用户C的权限处理该请求,导致来自网站B的而已代码被执行。

 

  防范:

    • 验证 HTTP Referer 字段
    • 请求地址中添加token并验证
    • 使用验证码
posted @ 2019-09-22 15:18  瓶子咕咕咕  阅读(583)  评论(0编辑  收藏  举报