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