认识跨站攻击与网站建设中xss脚本防范

2020-11-15

认识跨站攻击与网站建设中xss脚本防范

认识跨站脚本攻击xss

(跨站点脚本攻击)是当前Web应用中最危险和最普遍的漏洞之一。安全研究人员很难修补。这就是为什么在这么多网站中都会有它的身影。这种xss漏洞容易找到,大部分最受欢迎的网站,包括Google、Amazon等网站都发现了这个漏洞。

什么是Xss攻击

XSS通常用于发动Cookies窃取、恶意软件传播、会话劫持、恶意重定向等。攻击者将恶意JavaScript代码注入网站页面中,这样“受害者”的浏览器就会执行攻击者编写的恶意脚本。XSS是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作。在跨站点脚本攻击中,恶意代码在受影响用户的浏览器端执行,并对用户产生影响。

XSS攻击原理

XSS攻击能做什么?

其实XSS的种类非常的多尤其是变种的特别多,大致可以分为两种反射型:是通过URL参数直接注入,一般是使用alert来探测站点是否防御,直接攻击的使用src来引入自己的脚本

存储型:存储到DB后读取时注入(危害很大)在评论的时候写script标签,这样数据就是存储在数据库中的,如果该页面要读取出这条有script标签的信息那么将这个网址发给别人别人也会中招。

XSS攻击注入点:

html节点内容:如果一个节点是动态生成的,有可能这个节点的数据有脚本(用户输入信息)

html属性:某个html的属性是由用户输入的,输入的内容可能有脚本

js代码:js代码中存在后台注入的变量或者用户输入的信息

富文本:其实是一大段的html,我们需要保留格式又要去掉script标签,这是比较麻烦的

富文本得保留HTML,HTML有XSS就有攻击风险实际上浏览器有着XSS的部分防御机制,可以通过

来进行关闭,浏览器的防御很有限,只能是反射型的参数并且出现在html节点和属性中才会进行防御,在js和富文本中是不会拦截的。

HTML节点内容的XSS防御转义掉<<和>> 即转义掉<>即可,转义的时机有两种,一种是写入数据库的时候进行转义,另一种是在解析的时候进行转义。

这里是在显示的时候转义

HTML属性的XSS防御转义”&quto; 即转义掉双引号,'转义掉单引号,(另一个要注意的是实际上html的属性可以不包括引号,因此严格的说我们还需要对空格进行转义,但是这样会导致渲染的时候空格数不对,因此我们不转义空格,然后再写html属性的时候全部带上引号)这样属性就不会被提前关闭了

其实以上这两个函数可以合并成一个函数,这样不管是内容还是属性都可以使用一个函数来过滤了:

HTML转义函数

js转义

转义””或者替换成json

这里的解决方式并不完整,因为还有可能是单引号或者其他形势包裹的,这里最保险的方法其实很简单,就是对数据做一次JSON.stringify即可

富文本

由于需要完整的HTML因此不太容易过滤,一般是按照白名单进行保留部分标签和属性来进行过滤,除了允许的标签和属性,其他的全部不允许(也有黑名单的方式,但是由于html复杂效果比较差,原理就是之前的正则替换)

其实可以用别人写好的XSS组件就叫做xss,直接

白名单-使用第三方库XSS,支持指定白名单

来源:www.0592wap.cn
转载请注明来自http://www.0592wap.cn/793.html

上一篇:厦门餐饮行业网站建设解决方案
下一篇:如果企业的官方网站建设不完善会怎么样?

相关新闻

相关案例

一键拨号QQ咨询