• 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>

  • 相关阅读:
    OTPUB知识课堂——VMware虚拟机应该如何优化
    春风十里,不如梭子鱼云安全解决方案全心为你!
    企业进行云存储,必须先搞清楚这5个问题
    OTPUB知识讲堂——如何在云计算中部署SQL
    Convertlab——营销的艺术,数字化的艺术
    腾讯云化解安全危机,开启网络安全智能时代
    11.2
    笔记
    this
    JS数据的基本类型
  • 原文地址:https://www.cnblogs.com/qinyan20/p/3643296.html
Copyright © 2020-2023  润新知