CakePHP中文手册【翻译】-Data Sanitization
Data
Sanitization
第1节
在应用程序中使用Sanitize
Cake带有Sanitize,它是一个让你可以用来避免受到用户提交的数据,以及其他你不期望的数据的恶意攻击的类。Sanitize是一个核心类,因此它可以在代码里的任何地方使用,但是最有可能的是在Controller或Model中使用。
// 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节
让数据在SQL和HTML安全使用
本章介绍如何使用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); // 输出:
<font size="99"
color="#FF0000">HEY</font><script>...</script> 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函数)。
-
将用户输入的反斜杠交换为信任的反斜杠。