这是我参与更文挑战的第3天,活动详情查看: 更文挑战
昨天刚好简单认识了CSRF(链接在这里,欢迎拜访),今天刚好趁热打铁,再次重温下XSS,话不多说,现在开始。
XSS简介
跨站脚本攻击,英文全称是 Cross Site Scripting, 本来缩写是CSS, 但是为了和层叠样式表(Cascading Style Sheet, CSS)有所区别,所以在安全领域叫做”XSS”.
XSS攻击通常指的是攻击者通过利用网页开发时留下的漏洞,往Web页面里插入恶意Script代码,当用户浏览时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的.
简单举个例子:
一个网站有个评论输入框,评论的时候如果评论了JavaScript代码,比如<script>alert('我是攻击者的代码')</script>,如果没有做xss的过滤,则这段代码会被插入到html里面并执行,最终会弹出 ‘我是攻击者的代码’。
下面这段代码可以模拟XSS:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    function testCode() {
      const script = document.createElement('script')
      script.innerHTML = 'alert("我是攻击者的代码")' 
      document.body.appendChild(script)
    }
    testCode()
  </script>
</body>
</html>
复制代码
XSS危害
攻击者可以通过恶意注入的js代码,做很多伤害用户的事情,比如:
- 窃取用户的cookie,模拟用户登录,然后进行操作
 - 添加监听,监听用户的输入;
 - 伪造表单,欺骗用户登录,获取用户密码;
 - 生成垃圾广告
 - 等等
 
XSS分类
反射型XSS(经过服务端,不存储在数据库)
例子:用户访问一个带有XSS代码的URL请求时, 比如http://127.0.0.1:8080?test=<script>alert("XSS攻击")</script>,服务器端接收数据后,然后又把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞
存储型XSS(经过服务端,存储在数据库)
嵌入到web页面的恶意HTML会被存储到服务端,简而言之就是会被存储到数据库,等用户在打开页面时,会继续执行恶意代码,能够持续的攻击用户
例子:博客评论,用户评论,留言板,聊天室等用户可以输入的地方
如何预防
- 
对输入内容进行特殊字符转义,比如
&, <, >,",',或者使用encodeURIComponent函数进行转义 - 
cookie开启 HttpOnly,让攻击者获取不到cookie
 - 
配置
CSP(Content Security Policy), 也就是内容安全策略,通过配置CSP去设置浏览器只能允许哪些外部资源可以加载和执行 
总结:
切记:永远不要相信任何用户的输入






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)