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>

  • 相关阅读:
    小团队Git协作管理
    android用MediaCodeC将opengl绘制内容录制为一个mp4
    非对称加密算法RSA 学习
    .obj 和 .mtl格式详解
    “m3u8格式简析”与“视频秒开优化”
    Jenkins Android打包(Mac平台)
    java引用Arcface,实现人脸识别(demo)
    ArcFace Demo [Android]
    C# ArcFace 免费人脸识别 2.0 demo
    [Windows][C#][.NET][WPF]基于ArcFace2.0+红外双目摄像头的活体检测
  • 原文地址:https://www.cnblogs.com/qinyan20/p/3643296.html
Copyright © 2011-2022 走看看