zoukankan      html  css  js  c++  java
  • 什么是xss攻击?

    一.什么是xss攻击

      跨站脚本攻击(XSS),英文全称 Cross Site Script

      XSS攻击,一般是指黑客通过在网页中注入恶意脚本,当用户浏览网页时,恶意脚本执行,控制用户浏览器行为的一种攻击方式

      XSS攻击分为三种,反射型XSS、存储型XSS、DOM Based XSS.

    了解什么是xss攻击,例子:

      本地服务器demo目录下有个index.php,通过提交信息显示在页面上显示数据。

      正常情况下:http:localhost/demo/index.php?name=张三,

      网页上就会显示张三出来,这个信息是用户在浏览器的url中输入的,可以正常显示在页面上,但是如果在页面中插入一段javascript代码,页面就无法正常显示了,

      例:http:localhost/demo/index.php?name=<script>window.open(http://www.fanyi.com)</script>,

      例子虽然简单但是提现xss攻击的完整流程。

    1.反射性XSS

      也被称为非持久性XSS,这种攻击方式把XSS的Payload写在URL中,通过浏览器直接“反射”给用户。用户将一段含有恶意代码的请求提交给 Web 服务器,Web 服务器接收到请求时,又将恶意代码反射给了浏览器端,这种攻击方式通常需要诱使用户点击某个恶意链接,才能攻击成功。

    2.存储型XSS

      又被称为持久性XSS,会把黑客输入的恶意脚本存储在服务器的数据库中。当其他用户浏览页面包含这个恶意脚本的页面,用户将会受到黑客的攻击。一个常见的场景就是黑客写下一篇包含恶意JavaScript脚本的博客文章,当其他用户浏览这篇文章时,恶意的JavaScript代码将会执行

    3.DOM Based XSS

      基于 DOM 的 XSS 攻击是不牵涉到页面 Web 服务器的,其实就是利用后端代码的漏洞。它的特点是在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据.

    XSS攻击的危害

    我们把进行XSS攻击的恶意脚本成为XSS Payload。XSS Payload的本质是JavaScript脚本,所以JavaScript可以做什么,XSS攻击就可以做什么。
    一个最常见的XSS Payload就是盗取用户的Cookie,从而发起Cookie劫持攻击。Cookie中,一般会保存当前用户的登录凭证,如果Cookie被黑客盗取,以为着黑客有可能通过Cookie直接登进用户的账户,进行恶意操作。

    防御

    其实如今一些流行的浏览器都内置了一些对抗XSS的措施,比如Firefox的CSP、IE 8内置的XSS Filter等。

    • 将cookie等敏感信息设置为httponly,禁止Javascript通过document.cookie获得
    • 对所有的输入做严格的校验尤其是在服务器端,过滤掉任何不合法的输入,比如手机号必须是数字,通常可以采用正则表达式.
    • 净化和过滤掉不必要的html标签,比如:<iframe>, alt,<script> ;净化和过滤掉不必要的Javascript的事件标签,比如:onclick, onfocus
    • 转义单引号,双引号,尖括号等特殊字符,可以采用htmlencode编码 或者过滤掉这些特殊字符
    HttpOnly

    HttpOnly最早是由微软提出,并在IE6中实现的,至今已逐渐成为一个标准。浏览器将禁止页面的JavaScript访问带有HttpOnly 属性的Cookie。以下浏览器开始支持HttpOnly:

    • Microsoft IE 6 SP1+
    • Mozilla FireFox 2.0.0.5+
    • Mozilla Firefox 3.0.0.6+
    • Google Chrome
    • Apple Safari 4.0+
    • Opera 9.5+
    • 一个Cookie的使用过程如下:

      Step1: 浏览器向服务器发送请求,这时候没有cookie。 

      Step2: 服务器返回同时,发送Set-Cookie头,向客户端浏览器写入Cookie。 

      Step3: 在该Cookie到期前,浏览器访问该域名下所有的页面,都将发送该Cookie。而HttpOnly是在Set-Cookie时标记的。

     

  • 相关阅读:
    C++11之function模板和bind函数适配器
    C++11之右值引用(三):使用C++11编写string类以及“异常安全”的=运算符
    C++11之右值引用(二):右值引用与移动语义
    C++11之右值引用(一):从左值右值到右值引用
    C++Singleton的DCLP(双重锁)实现以及性能测评
    信息熵
    ip访问网站和localhost访问网站中top使用
    方差与协方差
    js获取file控件的完整路径(上传图片预览)
    对线性回归,logistic回归和一般回归
  • 原文地址:https://www.cnblogs.com/0314dxj/p/11849502.html
Copyright © 2011-2022 走看看