基本的过滤XSS函数,输出的时候进行过滤,输出的时候不要将内容写进html标签内
/*
* 说明:过滤XSS
* 使用:
* initnode.request.xss(val);
*/
this.xss = function (val) {
val = val.replace(/[<%3C]/g, "<");
val = val.replace(/[>%3E]/g, ">");
val = val.replace(/"/g, """);
val = val.replace(/'/g, "'");
return val;
}
是不是将 javascript / onclick 等这样的关键词也过滤掉?
理论上不需要,输出的时候用这个函数过滤 替换了 < > ’ " 标签,理论上一般无法组装成功
刚才看node模块 validator 的源码,发现它的xss()过滤了所有html 和javascript关键字呢
@initphp 把所有的<>都替换了,就没办法发图片了,不能因噎废食
@leizongmin 是的,有时候希望只限制危险TAG,这样就能图文并茂
@j4cnodejs 做防注入永远不要用黑名单,只用白名单
人类已经无法阻止cnodejs被XSS了!
这个过滤方法一直在我php框架中用,开源软件有些也是这样的过滤 主要是输出的时候过滤就行了 但是会碰到一些需要输出HTML的情况,这些就得特殊处理了
@initphp 实验证明: sanitize().xss()
只清除危险脚本, 不会破坏安全的HTML标签, 所以尽管放心去用!
@j4cnodejs 看了下 的确很复杂,但是我个人觉得过于复杂了,我这个应该能满足需求,php中就这么干…
@leizongmin <img src="{变量}"/> 这样就可以了… 遇到编辑器之类的另外处理
@initphp 晕死,发HTML全部被过滤了…尴尬
@initphp 安全的html标签不会被过滤的, 不安全(可能被执行的脚本)才会过滤掉