web 安全之XSS漏洞

xss 漏洞简介:跨站脚本攻击(Cross-site scripting,XSS)是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。当被攻击者登陆网站时就会自动运行这些恶意代码,从而,攻击者可以突破网站的访问权限,冒充受害者。

产生xss攻击的场景:

1、数据从一个不可靠的链接进入到一个web应用程序;

2、没有过滤掉恶意代码的动态内容呗发送给web 用户。

xss攻击可以分为3类,存储型(持久型)、反射型(非持久型)、DOM型。

存储型XSS

注入型脚本永久存储在目标服务器上。当浏览器请求数据时,脚本从服务器上传回并执行。

反射型XSS

当用户点击一个恶意链接,或者进入一个恶意网站时,注入脚本进入被攻击者的网站。web服务器将注入脚本,比如一个错误信息,搜索结果等,返回到用户的浏览器上。由于浏览器认为这个响应来自“可信任”的服务器,所以会执行这段脚本。

基于DOM的XSS

通过修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行,即页面本身没有变化,但由于DOM被环境恶意修改,有客户端代码被包含进了页面,并且意外执行。

解决XSS攻击,常用的方法,可以使用xss.js 插件,具体文档可参考:https://jsxss.com/zh/

原生js 中的应用如下:

第一种方法适用场景:点击按钮,挑转到另一个页面时,传递参数的过滤

第二种方法适用场景:已经挑战到一个页面了,那个页面的地址中存在一些参数,用户修改地址栏的参数

​<html>
<head>
  <title>测试</title>
  <meta charset="utf8">
</head>
<body>
  <a id="button">点我啊</a>
</body>
</html>
<script src="xss.js"></script>
<script>
   // 方式一
    var btn = document.getElementById('button');
    btn.onclick = function() {
        console.log('你点击了按钮哦!')
        var url = filterXSS("<https://www.baidu.com>");
        window.location.replace(url);


    }
// 方法二
    window.onload = function() {
        var currentPageUrl = "";
        if (typeof this.href === "undefined") {
            currentPageUrl = document.location.toString().toLowerCase();
        } else {
            currentPageUrl = filterXSS(this.href.toString().toLowerCase());
            window.onload()
        }
        console.log(currentPageUrl, 'currentPageUrl');

    }
</script>

猜你喜欢

转载自blog.csdn.net/2301_77147728/article/details/129840894