|
在网站中展示用户输入的信息时,hacker可以在里面放入一些脚本,执行的时候可以窃取cookie或打乱页面展现,ruby on rails中可以使用h()辅助方法将展示内容中的html标签或javascript标签过滤掉,但是对于需要展示富文本形式的网站,这种方式过于严厉,这种情况下可以使用Sanitize插件,Sanitize插件可以设置允许出现的html标签的白名单,白名单之外的标签都会被过滤,这样既保证了安全性,又可以选择性的展示富文本效果
使用方式:
1.安装:gem install sanitize
2.使用方法:参考:http://rgrove.github.com/sanitize/
1)Sanitize.clean(html) :会将html中所有的html标签过滤掉
2)Sanitize.clenn(html,param)
param 可以是Sanitize::Config::BASIC 、Sanitize::Config::RELAXED、Sanitize::Config::RESTRICTED中的一种,分别代表基本、宽松和严格的过滤
3)使用自定义的过滤:Sanitize.clean(html,{ :elements => [ 'a', 'b', 'blockquote', 'br', 'cite', 'code', 'dd', 'dl', 'dt', 'em', 'i', 'li', 'ol', 'p', 'pre', 'q', 'small', 'strike', 'strong', 'sub', 'sup', 'u', 'ul'], :attributes => { 'a' => ['href'], 'blockquote' => ['cite'], 'q' => ['cite']}} |
|