zoukankan      html  css  js  c++  java
  • sanitize 白名單逸出

    白名單逸出

    http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

    預設允許的HTML標籤和屬性如下:

    ActionView::Base.sanitized_allowed_tags
    => #<Set: {"strong", "em", "b", "i", "p", "code", "pre", "tt", "samp", "kbd", "var", "sub", "sup", "dfn", "cite", "big", "small", "address", "hr", "br", "div", "span", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "dl", "dt", "dd", "abbr", "acronym", "a", "img", "blockquote", "del", "ins"}>
    ActionView::Base.sanitized_allowed_attributes
    => #<Set: {"href", "src", "width", "height", "alt", "cite", "datetime", "title", "class", "name", "xml:lang", "abbr"}>

    如果需要增加,可以在config/application.rb中新增,例如:

    config.action_view.sanitized_allowed_tags = %w[table tr td]
    config.action_view.sanitized_allowed_attributes = "rel"
    它会砍掉script这个tag,以及onXxxx之类的attribut,你没有机会执行javascript,但是你还可以塞一些div或iframe之类的tag让你的版面烂掉。

          所以我们需要自定义一个html filter,可以自由的指定我们放行的那些tag。网上发现了这个sanitize.rb,完美的帮我们实现愿望。如何使用:
    第一行:
    ruby 代码
    1. def sanitize( html, okTags='a href, b, br, i, p' )  
    okTags代表就是允许的tag,目前有a,b,br,i,p之类的tag,如果输入<iframe>xxx</iframe>之类的不允许的code,就会出现
    xxx.不允许的结果都将被砍掉。如果想增加span,或font这样的tag,则可以:
    ruby 代码
    1. def sanitize( html, okTags='a href, b, br, i, p, span, font' )  

    a href之间没有用逗号隔开,是代表sanitize允许a这个tag使用href这个attribute,比如:
    <a href="http://blackanger.iteye.com" _fcksavedurl="http://lightyror.blogspot.com" target="_blank">Haha</a>
    只会出现: <a href=http://blackanger.iteye.com>Haha</a>,只有href这个属性可以保留,其他的被无情的砍掉。当我们输入这样的代码:
                <a href=http://blackanger.iteye.com>Haha
    会自动帮你补齐tag:

                <a href=http://blackanger.iteye.com>Haha</a>

  • 相关阅读:
    4.2编写第一个servlet(500错误解决)超级开心
    springmvc文件上传下载
    找出字符串中不重复字符的最长子串的长度
    微信小程序接入,https服务器搭建和调试
    js常用写法
    通过条件删除标签
    xml的修改遍历,以及建立
    shelve模块
    dump与load
    locate,find,df,mount,du命令
  • 原文地址:https://www.cnblogs.com/qinyan20/p/3643296.html
Copyright © 2011-2022 走看看