express如何防止注入?
发布于 11 年前 作者 sunuxreg 9927 次浏览 最后一次编辑是 8 年前

我相设计个类似微博的网站,有这么个细节问题: 在发布微博时,用户书写的内容里边不可避免的会输入一些特殊符号,如% “” / 等,这些内容直接插入数据库会不会存在注入的风险?如果有风险怎么能对这些符号进行编码,就好像get方法会自动escape特殊字符那样?如果用nodejs的Crypto模块对所有内容进行md5编码会不会损失很多性能。谢谢。

9 回复

没有风险,你在显示的不要直接写innerHTML = xxx ,或者等同的语句。应该这样 html = escapeFun(xxx)

“防止注入”不是说不能有特殊符号。

后天执行前台传入的数据要整干净,别一股脑就执行。

想多了, 防注入又不是什么很高端的东西

用参数绑定或者ORM, 别手动拼接sql字符串

其他诸如like注意过滤下原数据里的%

md5编码并非针对解决特殊字符编码的问题。 md5运算对性能带来损失是肯定的。 楼主是要防止XSS攻击?javascript 自带的 encodeURIComponent 不行么?

@chloe @whatsmynick @luckydrq 其实我最担心的是:用户输入的内容中包含的" %> /> 等内容会和ejs模板中的html标记形成匹配,从而打乱页面的显示。或者在数据传递、处理过程中和nodejs中的代码形成标记匹配,从而导致程序出错。

如果的内容不用做模板的话不用担心 ejs会自动escape除非你用了不escapse的方法如果 <%- %>

哦,那我就放心了

1、输入时过滤一些常见的参数,入or and insert 之类的 2、输出时转义内容 3、尽量使用POST 方法提交表单 4、验证表单数据源的合法性

4有难度啊

回到顶部