求大神讲讲web安全,nodejs怎么防止跨域攻击和sql注入
发布于 7 年前 作者 chengshubei 7746 次浏览 来自 问答

小白对跨域攻击还不太理解,网上资料很乱,一会儿xxs, 一会儿 crsf ,搞不明白; sql注入比较好理解,我用sequelize操作mysql, 自己测试 query方法是可以注入的,如下: var a = ‘csb" or age="30’; sequelize.query(‘select * from cc1 where username="’ + a + ‘"’) 其他orm的 find,create, update 没试出来,好像不怕注入,不知道到底有没有问题。

有大神讲讲这两种攻击,nodejs服务器后台 怎么处理 来防止?

9 回复

尝试梳理一下自己所看到的资料,整理一篇精华

是CSRF(Cross-site request forgery) 不是你写的那个! 跨域不用担心.主流浏览器都会帮你做防御的. 问题不大,主要是你自己别给其他域的权限即可.非必要的话,以最小权限原则. xss主要就是过滤输入输出.如果业务很多,还是找人审计代码吧.或者用比较成熟的模块.CSRF的话,1,验证来源 2加随机token之类的. sqli主要还是过滤输入的地方.过滤/转义关键字比如select,and,or等等(有专门的防注入模块).觉得怕麻烦的话.用那些云主机的防御功能.再加个cdn基本就没事了.(对于一般的反射型跨站也适用) 总之一切输入输出都是有害的,能转义就转义,能过滤就过滤,自己搞不定就找厂商服务商,现在安全产品一堆!

看看《白帽子讲web安全》

@chrome10086 检测传递过来的参数中是否有空格,有空格的把空格都去掉,是不是就可以防止xss和sql注入?

@nullcc 好大的部头。。。下下来慢慢啃

@chengshubei 前后台要一起防,不过现在好像没听过比较成熟的模块,,因为一直是易守难攻啊,,不清楚你的业务具体是怎样的,需不需要太高的安全防护级别,实在有需求的话就像二楼说的那样吧,,找成熟的安全厂商帮你解决

@chengshubei 防不了的 /**/ %20 \t () 等等 这些都可以代替空格 比如 : SELECT(name),(population)FROM[cia]在sqlserver下正常执行,没出现空格.

我这几天正好打算每天写1篇web安全的文章,每天一个方面,可能会有十几篇

@zhanzhenzhen 期待,发下链接就更好了

回到顶部