请问 @snoopy 大虾该怎样彻底杜绝CSRF,XSS攻击呢?
发布于 2年前 作者 j4cnodejs 1946 次浏览

[[[[[[@snoopy](/user/snoopy)](/user/snoopy)](/user/snoopy)](/user/snoopy)](/user/snoopy)](/user/snoopy) 刚拜读完你的《CSRF攻击实例,注入cnodejs.org官网》,你太牛了!我们都用可视化的编辑器,支持图文并茂的格式,该怎样彻底杜绝攻击呢?

14 回复

@snoopy 如果客户端允许递交html格式的代码(大多数可视化编辑器都是这样),但又要杜绝攻击, 是不是只要过滤掉<script>, javascript: , onclick, onload, onXXX 等事件就行了. 我看了你的文章后的启发,就是只要切断所有直接和间接执行脚本的可能路径, 就能防范攻击了. 具体的执行路径, 除了上面写的 <script>标签,和所有onXXX事件, 还有哪些?

@snoopy nodejs express-validator 有一个xss()函数, 能防住客户端提交html格式代码时, 可能存在的XSS攻击代码吗?

防止注入永远不要用黑名单,用白名单,明确我们支持的几种标签,比如我们只支持img,a,p这3种标签,其他的统统干掉。事件是一定要全部屏蔽掉的,一个都不剩,另外再加上将双引号,单引号,左右尖括号都要去除。基本可以防止大部分注入攻击了。但是有些攻击防不胜防的,可能还需要根据你网站的业务来做针对性的措施。比如url注入,或者利用flash,utf-8编码注入等等。当然就算你做了白名单,如果做的不够完善,还是有可能被攻击者有机可乘的。

.xss()这个函数没去看,不过就目前cnodjs被注入的各种惨状来看,貌似这个函数没多大作用。

@snoopy 我注意到 node-club源码里只对标题进行了净化(sanitize) 和防xss处理:

var title = sanitize(req.body.title).trim(); title = sanitize(title).xss();

并没有对帖子或回复的内容 (req.body.t_content) 进行防范操作, 不知为何?

@j4cnodejs 那个函数应该是去除html标签用的,如果再内容上也这么搞的话,加粗,斜体,图片什么都显示不出来了,一棍子全部打死,XSS是防止了,但是这个网站也没法用了。

@snoopy 我研究了一下 validator 的 xss()函数, 发现它的作用就是:移除标签中的危险脚本或漏洞, 而不会破坏那些安全的Tag结构

人类已经无法阻止cnodejs被XSS了!

@snoopy 貌似是的,现在被攻击的帖子已经越来越多了,甚至我在想,他们会不会利用你的知识去盗取我们的帐号呢?

人类已经无法阻止cnodejs被XSS了!

人类已经无法阻止cnodejs被XSS了!

人类已经无法阻止cnodejs被XSS了!

node-validator 2.0 xss函数被移除了, 不知道为什么, 现在有什么好的代替方案吗?

好吧, validator 作者回我说他没有精力维护xss部分, 说是太专业情况太复杂…

回到顶部