Drupal专业开发指南 第20章 安全的处理URLs

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 13:08

模块常常处理用户提交的URLs并显示它们。我们需要一些机制来确保用户提供的值确实是一个合法的URL。Drupal提供了函数check_url(),它实际上是仅仅对filter_xss_bad_protocol()做了封装。它通过检查来确保URL中的协议是该Drupal站点所允许的协议(参看“使用filter_xss()阻止跨站点脚本攻击”部分的第5步),并使用check_plain()来处理URL。

Drupal版本:

Drupal专业开发指南 第20章 使用filter_xss_admin()

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 13:06

有时你想让你的模块为后台管理页面生成HTML。由于我们对后台管理页面进行了访问控制,所以我们可以假定这些可以访问后台管理页面的用户比普通用户更可信。你可以为后台管理页面建立一个特定的过滤器并使用过滤器系统,但是这有点麻烦。因此,Drupal提供了函数filter_xss_admin()。它使用一组更加自由的可用标签列表,简单的对filter_xss()做了封装,除了<script> 和 <style>标签以外,它包含了所有的其它标签。使用它的一个例子是在主题中展示站点的宗旨(mission):

Drupal版本:

Drupal专业开发指南 第20章 考虑数据类型

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 12:57

当在一个像Drupal这样的系统中处理文本时,由于用户输入将会作为站点的一部分展示出来,所以如果将用户输入看作一个带有类型的变量,那么就能帮我们很好的理解这个系统。如果你使用过强类型语言写过程序,比如JAVA,那么你将熟悉强类型变量。例如,在Java中,一个整数就是一个整数。在PHP(弱类型语言)中,使用PHP的自动类型转换,根据上下文,你既可以把整数看作字符串,也可以看作整数。但是优秀的PHP程序员都会仔细的考虑类型,并恰到好处的利用自动类型转换。同样,尽管是通过用户输入得到的,节点提交表单中的“Body”(主体)字段,也可以作为一个文本进行处理,如果我们把它看作具有特定类型的文本,那么就会更好的理解的它的本质。用户输入的是纯文本么?用户输入的文本中是否带有HTML标签,如果带有的话是否将它们也一同显示出来?如果带有HTML标签的话,这些标签中是否允许带有恶意的标签,比如JavaScript,它可以将你的页面替换成一个手机铃声的广告?在展示给用户的页面中,采用HTML格式;用户输入是各种文本格式类型的变体,在展示它们以前,必须安全的将其转化为HTML。如果我们使用这种方式来考虑用户输入的话,这能够帮助我们理解Drupal的文本转换功能的工作原理。文本输入的常见类型,还有将文本转化为另一种格式的函数,如表20-1所示。

Drupal版本:

Drupal专业开发指南 第20章 编写安全的代码

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 12:53

几乎每天我们都可以看到关于安全漏洞的头条消息,这种或者那种软件出现了漏洞。对于每个严谨的开发者来讲,将恶意用户拒之门外就是头等大事。

一个恶意用户可以使用多种方式来攻击你的Drupal站点。这些攻击方式包括,向你的系统中注入代码并让它执行,操纵你数据库中的数据,查看用户无权访问的资料,通过你的Drupal站点发送垃圾邮件。在本章,我们将学习如何编写安全的代码来阻止这些攻击。
幸运的是,Drupal提供了一些工具,使用它们你就可以很容易的消除这些常见的安全漏洞。

老葛的Drupal培训班 Think in Drupal

Drupal版本:

页面

Subscribe to Think in Drupal RSS