您的位置:首页 > 编程语言 > PHP开发

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

2009-11-03 16:10 134 查看
 输入格式(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息