首页 > 其他 > 详细

关于XSS的一些随记

时间:2020-12-23 15:09:35      阅读:25      评论:0      收藏:0      [点我收藏+]

 

xss a标签href 输出问题解决过程中的一些随记

最近网站在安全检测中一直出现xss问题,查看反馈报告发现两类问题

 

1.jQuery版本过低导致

  这个可以通过升级jQuery版本来解决:本次我的是从3.x.x 升级到3.5.0以上

  但是在jQuery版本过老的情况下,不建议跨度太大的升级,否则会导致一系列的不兼容以及方法失效等问题

  这样可以采用模糊jQuery版本的方法,比如更改jQuery文件名称,并修改jQuery源文件中的版本号信息

  比如:1.2.0 可以改为 01.02.00 这样可以避免被检查到真实的jQuery版本

  注意在修改jQuery链接时,要把之前的地址从页面中删除,因为注释掉仍然会被检测到(在此问题上我头大了好久,大概是憨憨行为)

 

2.感觉像是a标签中href属性中容易被篡改插入js代码导致的问题

搜索了很多解决方案,但感觉不是很靠谱。原因是项目是一个老项目,经过很多交接过程,到我这里已经有很多问题不可预知,因此不适合改动大的处理办法。

于是在查找了一些方法后,最终还是准备尝试通过过滤href中的链接是否符合开头为 http 或 https 来尝试解决这个问题

主要方法如下:

//页面加载初始化 过滤a标签 href属性中的xss
function filterXSS_tag_a_Init() {

    console.log(‘init‘);

    let a = document.getElementsByTagName(‘a‘);

    console.log(a.length);

    for (var i = 0; i < a.length; i++) {

        filterXSS_tag_a_click(a[i]);
        a[i].setAttribute(‘onclick‘, ‘filterXSS_tag_a_click(this)‘);
    }

}

//在a标签点击时 过滤a标签 href属性中的xss
function filterXSS_tag_a_click(obj) {

    if (obj.href.indexOf(‘http‘) != 0 && obj.href.indexOf(‘https‘) != 0) {
 
        console.log(‘无效的链接‘);
        obj.href = ‘#‘;
        obj.innerText = ‘#‘;
    }
}

js中给a标签添加onclick事件:setAttribute(‘onclick‘, ‘filterXSS_tag_a_click(this)‘);
不选择使用jQuery的原因也是因为代码过于老,引入新的东西会有可能对之前的功能造成影响

以上两个方法 一个在页面初加载时,先对页面内所有a标签先进行一次过滤,并为所有a标签添加onclick事件

另一个在标签的onclick事件中被调用,防止中间被篡改。

其实好像可以在加载时只为a标签添加onclick,并在点击时进行过滤就ok了。

 

关于XSS的一些随记

原文:https://www.cnblogs.com/catherinehu/p/14177617.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!