您的位置:首页 > Web前端 > JavaScript

Javascript 输入框 xss注入 以及防范

2016-12-02 23:06 183 查看

注入

类似于sql注入,在输入内容上动手脚,然后造成标签闭合的现象,再写入恶意 的js;

例如:

<input type="text" value="$var">


输入的内容如果是

" onclick = "javascript_function()" >


在遇到有字符限制的情况下,可以将两个input之间的内容注释掉, 再在之间构建恶意的js

<input type="text" value="" <!-->


...


<input type="text" value="" --> onclick="function eval()" >


还看到MySpace的蠕虫的构建方式, 其中的方法也真是巧妙地避开了所有的限制规则:

比如限制了 javascript,onreadystatechange等等关键字以及 iframe, script,style等等标签;

但是,这并不表明木有漏洞了;

其中, 可以使用拼接字符串的方式,将字符串拼接起来:

<input type="text" value="" style="background:url(expr)" expr="document.getElementById('id').onready"+"statechange">


防范:

采取完全不信任用户输入的心态去对待,前端过滤特殊字符, 类似 ” ’ & * ^ ! 等等;

var reg = /\~|\!|\!|\@|\#|\$|\^|\¥|\%|\…|\&|\*|\(|\)|\—|\+|\{|\}|\“|\”|\《|\》|\?|\?|\<|\>|\'|\"/g;
$("#ind_name").val($(this).val().replace(reg, ""));


将输入内容进行编码:

encodeURIComponent


还得防范css的xss, 比如: Img的src属性, 就可以实现将用户的隐私发送到指定地址;

background的url 也可以实现蠕虫攻击(Facebook和微博都发生过)

但主要防范还是要在后端,后端必须过滤输入和输出, 对特殊字符 < > script 等等更是要防范,还有就是对cookie设置

httponly:true


标识符;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息