“黑客”必学进攻之“跨站剧本进攻”
个中1.js源码如下:
下面我们试着用登岸,功效如图所示: 可见暗码已经修改乐成! 七、怎样防止"跨站剧本进攻" 防止XSS有一个原则: 宁死也不让数据酿成可执行的代码,不信赖任何用户的数据,严酷区分数据和代码 既然是将数据给注入到代码内里酿成可执行代码,那么我们就找出全部也许的处所,绝大大都XSS产生在MVC模式内里View层。 我们来看看进程: 个中:A B C D E F 标志的处所则代表也许会发生XSS 我们分差异上下文来举办差异的编码函数,就可以很必定的隔离在这些处所发生XSS,只要环境不非凡(非凡如:宽字节 base64编码等),就必然可以担保安详。 A: 后端》》》CSS 输出到CSS凡是不会呈现什么XSS,可是假如CSS内里有也许的用户完全可以节制的变量,假如我可以自界说 style 属性并且没过滤,可能可以直接节制某段CSS。
这样就可以操作伪协议来实现。 办理要领: 对style属性内里的数据举办严酷的搜查,而且对付用户输出到xss内里的内容举办恰当的CSS编码。 B: 后端》》》》Javascript 这种直接输出的js又不外滤的确就是老掉牙的xss裂痕。
虽然尚有一堆要领实现各类xss,各类姿势。以是这种是最最最简朴的xss也是最轻易被操作的。 办理要领: 对其举办严酷的JavascriptEncode,将某些字符转义,如 " 酿成 " ,' 酿成 ' 等等(不止这些) 防备用户逃走你的 双(单)引号,也可以防备其他姿势注入。 C: Javascript》》》天生HTML元素或添加html元素属性 如 js 给
添加height 属性 酿成
对付这个时辰,从js输出数据到属性或 innerHTML/document.write 等函数天生任何元素,都要视为一次也许的XSS输出。由于上下文已经纷歧样了,这次JavascriptEncode是差池的。不然你只能担保数据在js内里不会被注入,而在html的话,就不必然了。 办理要领: 应该行使 HTMLEncode 编码,担保你从js输出到HTML的元素和属性不会离开你的节制。 D: Javascript》》》输出到HTML元素内里的变乱 或其他任何动态执行js的处所 列如下列一段代码,假如foo是从js执行之后动态输出到html内里的。foo是用户可以节制的。
则会酿成:
办理方案: 行使 JavascriptEncode,对变乱内里的js代码举办编码。这里也必需视为一次也许的XSS输出。 E:后端 》》》》输出到HTML元素内里的变乱 或其他任何动态执行js的处所 列的确可以视为跟D是千篇一律的,以是你只必要领略D环境,那么这个也就天然可以领略了。
办理要领: 也是对var举办JavascriptEncode。 F:后端 》》》》天生HTML元素或添加html元素属性 与C环境也是千篇一律。只是输出源差异了罢了,道理模式都一样。
假如$var是后端输出的,那么我可以输入
总之这样很轻易注入XSS。 办理要领: 对var变量举办HtmlEncode,那么我就无论怎样也构建不了<>任何元素了。也就不行能有 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |