Ruby Sinatra应用程序中的XSS保护

Ruby Sinatra应用程序中的XSS保护,ruby,sinatra,xss,Ruby,Sinatra,Xss,对于html='和类似的输入,包括javascript,类似的(Sanitize.clean(@post.content)#=>foo')会覆盖所有基础,以防止用户将javascript和html注入数据库吗 我是否应该采取其他步骤来清理用户输入 您可以使用ERB::Util方法html\u escape(别名为较短的h) 见: 注意:复制自Mladen的评论作为社区wiki答案为什么要阻止用户向数据库输入HTML和JS?我宁愿不把这些内容原封不动地显示出来。比如说谢谢你的回复。如果没有HAML

对于
html='
和类似的输入,包括javascript,类似的(
Sanitize.clean(@post.content)#=>foo'
)会覆盖所有基础,以防止用户将javascript和html注入数据库吗


我是否应该采取其他步骤来清理用户输入

您可以使用ERB::Util方法
html\u escape
(别名为较短的
h

见:


注意:复制自Mladen的评论作为社区wiki答案

为什么要阻止用户向数据库输入HTML和JS?我宁愿不把这些内容原封不动地显示出来。比如说谢谢你的回复。如果没有HAML,如何在HTML中实现这一点?我对这种方法有一个总体的担忧。如果我阻止html&js显示raw,那么首先允许它保存到DB的目的是什么?我宁愿不允许保存数据,以避免在我的UI中呈现丑陋的html/js标记。html只是一种可能的表示形式,应该与您的内容分开。如果用户想要输入字符
,我认为在保存到数据库之前,不应该对其进行任何转换。相反,在将内容呈现为HTML之前,应该依靠框架(或者模板库)来准备内容。那么,你用什么来写你的Sinatra视图呢?我用ERB做模板这应该可以做到: