Drupal格式过滤安全设置与FCKEditor配置

 输入格式(Input format)在Drupal 中指的是:在创建站点内容时,对所输入的内容进行过滤所依照的方法,Drupal默认有三种输入格式:

1. Filtered HTML, 这个选项会将用户输入的包含HTML 编码的文字进行过滤, 根据用户的配置,可以将没有在允许列表中的HTML标签进行过滤或转换

2. Full HTML, 这个选项就是不过滤任何用户输入的HTML 标签,原样呈现,但是如果用户输入有害的代码也会被执行,例如: <div style="border:1px solid black;height:100px">大家好</div>, <script>alert('hello')</script>等,通常只有管理员才允许使用该选项。

3. PHP code(需要PHP filter模块的支持 ),这个选项允许用户输入并执行PHP code,如果输入有害的代码,后果不可想象,应该只有管理员才可以使用该选项。

 

因此, 如果 输入格式(Input format)配置不当,将给整个网站带来很大的安全隐患,同时还要使用户能够方便的输入各种格式的内容,下面是一种常见的配置方法:

1. 将 Filtered HTML输入格式设为默认的输入格式,设置方法为在Site configuration -> Input formats中进行设置。

2. 在 Filtered HTML输入格式的配置页面里,将Allowed HTML tags的值设为

           <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> 

           <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> 

           <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote>

           <pre> <address> <code> <cite> <embed> <object> <strike> <caption>

这些HTML 标签都是用户常用的并且被证明是无害的标签,当然你可以根据实际需要增加或去除一部分标签。

3. 通常情况下用户在输入内容时可以通过点击输入框下面的Input Formatting来选择输入格式,因此还要在权限设置里将普通用户的选择输入权限
的功能关闭,具体方法为:在User management->Permissions里,找到administer filters,将普通用户组的勾去掉并保存。

通过以上的配置后在没有FCKEditor的情况下已经可以完美的工作了,但是如果Drupal使用了FCKEditor,因为正常情况下Filtered HTML输入格式不仅过滤普通的HTML标签(不在Allowed HTML tgas列表中),而且会过滤内联的样式设定,例如<h2 style="color: red;">hello</h2>,因此你也将无法使用FCKEditor中的字体设置,颜色设置等功能
通过以下几种方法,可以在开启Filtered HTML情况下继续使用FCKEditor里的各种样式:

1. 让可信任的用户使用Full HTML输入格式,而其它用户使用Filtered HTML输入格式,具体方法就是给可信任的用户组分配
administer filters的权限,这样可信任用户就可以在输入内容时选择不同的输入格式,而其它用户则不可以选择输入格式。

2. 将内联的样式改成老的HTML样式,例如<font color="red"></font>,只要把<font>加到Filtered HTML允许列表中就不会被过滤掉了,将以下的配置内容加到fckeditor.config.js的最下面:
FCKConfig.CoreStyles['FontFace'] = 
{
Element : 'font',
Attributes : { 'face' : '#("Font")' }
};
FCKConfig.CoreStyles['Size'] =
{
Element : 'font',
Attributes : { 'size' : '#("Size","fontSize")' }
};
FCKConfig.CoreStyles['Color'] =
{
Element : 'font',
Attributes : { 'color' : '#("Color","color")' }
};
FCKConfig.FontSizes = '1/xx-small;2/x-small;3/small;4/medium;5/large;6/x-large;7/xx-large' ;
3. 使用CSS预定义样式取代'FontFormat','FontName','FontSize','TextColor' , 例如在Style下拉列表中添加一个“红色”按钮,然后在fckstyles.xml中定义如下代码<Style name="Red" element="div" /> <Attribute name="class" value="red" />, 然后在css文件中定义.red {color: red}就可以了
    参考文章
    1. http://drupal.fckeditor.net/filters
    2. http://drupaluser.cn/html/xdrupal/2009-01-08/476.html

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值