下载鸥 > 网站下载 > 开发教程 > JS/JQuery

JavaScript过滤XSS攻击方法

263 2021-03-03 20:58:32

收藏
XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击。本来缩写应该是CSS,但为了和层叠样式(CasCADing Style Sheet,CSS)有所区分,故称XSS。

对于攻击者来说,能够让受害者浏览器执行恶意代码的唯一方式,就是把代码注入到受害者从网站下载的网页中。
 

xss攻击的种类

一、持续型XSS攻击:恶意脚本来源于网站的数据库

我们来看这种攻击的一个场景

1、攻击者通过评论表单提交将<script>alert(‘aaa’)</script>提交到网站

2、网站后端对提交的评论数据不做任何操作,直接存储到数据库中

3、其他用户访问正常访问网站,并且需要请求网站的评论数据

4、网站后端会从数据库中取出数据,直接返回给用户

5、用户得到页面后,直接运行攻击者提交的代码<script>alert(‘aaa’)</script>,所有用户都会在网页中弹出aaa的弹窗

这种攻击方式恶意代码会被存储在数据库中,其他用户在正常访问的情况下,也有会被攻击,影响的范围比较大

二、反射型XSS攻击:恶意脚本来源于受害者的请求

在一个反射型XSS攻击中,恶意文本属于受害者发送给网站的请求中的一部分。随后网站又把恶意文本包含进用于响应用户的返回页面中,发还给用户。

我们来看下面这个场景

1、用户误点开了带攻击的url :http://xxx?keyword=<script>alert('aaa')</script>

2、网站给受害者的返回中包含了来自URL的的恶意文本

3、用户的浏览器收到文本后执行页面,会在网页中弹窗aaa
反射型的攻击需要用户主动的去访问带攻击的链接,攻击者可以通过邮件或者短信的形式,诱导受害者点开链接。如果攻击者配合短链接URL,攻击成功的概率会更高

4、基于DOM的XSS攻击
基于DOM的XSS攻击是反射型攻击的变种。服务器返回的页面是正常的,只是我们在页面执行js的过程中,会把攻击代码植入到页面中

JavaScript过滤XSS攻击方法
var filterXSS=function(oriStr){
if(!oriStr){
return oriStr;
}
var charCodes=['3c','3e','27','22','28','29','60',{format:'script{}',chr:'3a'}];//要转义字符的16进制ASCII码[1<  2>  3'  4"  5(  6)  7`]
var xssChars=[],filterChars=[],tmpFormat='{}',tmpChr;
for(var i=0;i<charCodes.length;i++){
if('string'==typeof charCodes[i]){
tmpFormat='{}';
tmpChr=charCodes[i];
}else{
tmpFormat=charCodes[i].format;
tmpChr=charCodes[i].chr
}
xssChars.push(tmpFormat.replace('{}','\\u00'+tmpChr));
xssChars.push(tmpFormat.replace('{}','%'+tmpChr));//1次encode
xssChars.push(tmpFormat.replace('{}','%25'+tmpChr));//2次encode
filterChars.push(tmpFormat.replace('{}','&#x'+tmpChr+';'));
filterChars.push(tmpFormat.replace('{}','%26%23x'+tmpChr+'%3B'));//1次encode
filterChars.push(tmpFormat.replace('{}','%2526%2523x' + tmpChr + '%253B'));//2次encode
}
for(var i=0;i<xssChars.length;i++){
oriStr=oriStr.replace(new RegExp(xssChars[i],'gi'),filterChars[i]);
}
//预防script:
oriStr=oriStr.replace(/script[\u000d\u000a\u0020]+\:/,'script:');
return oriStr;

本文地址:https://xzo.com.cn/develop/js/655.html

有帮助,很赞!

信息来源:精准像素
信息标签
导出教程 下载word版教程
发表评论 共有条评论
关于JS/JQuery


JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JavaScript十分强大,不管是前端页面开发、视觉动态渲染、数据交互还是后端逻辑处理,都可以通过JS实现。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中。

推荐JS/JQuery开发教程
jQuery怎样监听鼠标滚动是向上还是向下的状态?
jQuery怎样监听鼠标滚动是向上还是向下的状态?

知乎鼠标向下滚动显示文章标题,向上滚动显示栏目;又或者向下滚动到底部时异步...

0 440
jquery怎样获取textarea用户输入的行数?
jquery怎样获取textarea用户输入的行数?

jQuery是一个相当好用的js插件,通过jquery我们可以实现很多功能,例如今天要介...

0 436
JS获取当前时间、日期、星期并每秒更新一次
JS获取当前时间、日期、星期并每秒更新一次

很多网站上会有当前年月日、星期、时间的展示。这个展示用php做未免浪费性...

0 295
$(window).height() 和 $(document).height()有什么不同?
$(window).height() 和 $(document).height()有什么不同?

我们常用$(window).height() 和 $(document).height()来监听当前高度,但这个...

1 273
JS控制输入字数的两个方案
JS控制输入字数的两个方案

我们在文章输入框中经常有用到字数控制,但字数控制有两种方案,一种是字母/空...

0 295
js判断windows操作系统还是mac os系统
js判断windows操作系统还是mac os系统

网站日常访客主要是windows和mac os两种操作系统,如果网站提供资源下载,则需...

0 1517
js网站视频播放器ckplayer和dplayer优缺点分析
js网站视频播放器ckplayer和dplayer优缺点分析

dplayer和ckplayer都是非常流行的web视频播放器,二者都占有相当大的用户市场...

0 1308
JS获取浏览器语言(中英文多语言站)并自动跳转代码
JS获取浏览器语言(中英文多语言站)并自动跳转代码

如果是多语言站点,主动获取浏览器默认语言并自动进行跳转可以有效降低跳出率...

0 749
随机JS/JQuery开发教程
JS怎样做倒计时效果?
JS怎样做倒计时效果?

在各种盛大的节日、活动前,网站制作倒计时特效可有效给活动页引流。那么,怎样...

1 337
JS强制手机端横屏方法
JS强制手机端横屏方法

JS强制手机端横屏显示,需要通过代码来实现,我们需判断手机当前是否竖屏,如果是...

1 548
禁止指定城市/省份IP访问JS代码
禁止指定城市/省份IP访问JS代码

对于小部分站点而言,需要禁止一些地区访问达到安全的目的。那么,怎样通过JS禁...

7 938
给网站加一个复制提示窗口JS代码
给网站加一个复制提示窗口JS代码

给网站加一个复制提示窗口JS代码,复制网站内容就会弹出提示框...

12 389
JS代码解除网页右键限制
JS代码解除网页右键限制

JS解除右键限制方法一...

11 318
本地储存window.localStorage使用方法
本地储存window.localStorage使用方法

浏览器本地储存用window.localStorage方法来完成,window.localStorage分JS原...

15 239
JS年月日星期早中午时间代码
JS年月日星期早中午时间代码

JS年月日星期早中午时间代码,精准像素后台自动问候时间代码,完美简单。...

0 291
JS年月日时分秒实时动态显示代码
JS年月日时分秒实时动态显示代码

JS年月日时分秒实时动态显示代码,每秒自动刷新一次。...

3 262
客服QQ:341553759
点击咨询 常见问题 >
官方交流群:90432500
点击加入