CakePHP中文手册【翻译】-Data Sanitization

Data Sanitization

1

在应用程序中使用Sanitize

Cake带有Sanitize,它是一个让你可以用来避免受到用户提交的数据,以及其他你不期望的数据的恶意攻击的类。Sanitize是一个核心类,因此它可以在代码里的任何地方使用,但是最有可能的是在ControllerModel中使用。

// First, include the core library:

 

uses('sanitize');

 

// Next, create a new Sanitize object:

 

$mrClean = new Sanitize();

 

// From here, you can use Sanitize to clean your data

// (These methods explained in the next section)

2

让数据在SQLHTML安全使用

本章介绍如何使用Sanitize提供的某些功能。

paranoid

string $string

array $allowedChars

本函数去除任何不在目标字符串$string中的不是普通字母数字字符的任何东西。虽说如此,你也可以让它忽略某些特定的字符,可以通过在$allowed数组中来传递这些允许的字符。

$badString = ";:<script><html><   // >@@#";

 

echo $mrClean->paranoid($badString);

 

// 输出: scripthtml

 

echo $mrClean->paranoid($badString, array(' ', '@'));

 

// 输出: scripthtml    @@

html

string $string

boolean $remove = false

本函数帮助你在已存在的HTML布局里,让用户提交的数据准备显示。如果你不想用户打破你的布局,或者在blog留言,论坛post,以及类似地方里插入图像或脚本,它是非常有用的。如果$remove选项设为true,会删除任何HTML,而不让他们作为HTML元素来显示。

$badString = '<font size="99" color="#FF0000">HEY</font><script>...</script>';

 

echo $mrClean->html($badString);

 

// 输出: &lt;font size=&quot;99&quot; color=&quot;#FF0000&quot;&gt;HEY&lt;/font&gt;&lt;script&gt;...&lt;/script&gt;

 

echo $mrClean->html($badString, true);

 

// 输出: font size=99 color=#FF0000 HEY fontscript...script

sql

string $string

通过插入斜杠,依靠系统当前的magic_quotes_gpc设置,此方法用来去除SQL语句。

cleanArray

array @$dirtyArray

本函数是一个工业里,多用途的清洁人员,用来在整个数组(例如,像$this->params['form'])上使用。本函数带有一个数组,而且将会清理它:不会返回任何东西,因为数组通过引用传递的。在数组的每一个元素上,会进行下面的清理操作(递归地):

  • 用正规的空格替换单数空格(包括0xCA)。
  • HTML由它相应的HTNL元素替换HTML(包括\n<br>)。
  • Double-check特殊字符,并为增强的SQL安全移除回车。
  • SQL增加斜杠(仅调用上面提到的SQL函数)。
  •   将用户输入的反斜杠交换为信任的反斜杠。
Last Updated:2006年12月3日
posted @ 2006-11-30 09:50  张太国  阅读(...)  评论(...编辑  收藏