使用 FILTER_SANITIZE_FULL_SPECIAL_CHARS 后使用并验证 RTF 输入
Using & validating RTF input after using FILTER_SANITIZE_FULL_SPECIAL_CHARS
我正在尝试验证 TinyMCE 编辑器提供的富文本输入。我很清楚让自己对 XSS 等敞开大门,并希望解决这个问题。
我在使用以下代码对 POST 数据执行任何操作之前对其进行清理:
//sanitise POST array
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
然后我有一个自定义验证 class 来检查每个字段输入,现在它已经被清理过,但是...我不确定如何检查经过清理的 RTF 输入。例如,我正在使用 ctype-alpha 检查 alpha 输入 & filter_var($this->currentObject->value, FILTER_VALIDATE_EMAIL 检查有效的电子邮件地址,但我不确定要使用什么经过清理的 tinyMCE 字段。
我想我需要的可能是正则表达式?有谁知道检查 tinyMCE RTF 输入的正确表达式?我这样做的方式正确吗???
如果使用正则表达式,我可以使用下面的函数来 return 它是否有效:
//used to send a custom regex
function regex($regex, $errorMsg = null)
{
if ($this->isValid && (!empty($this->currentObject->value))) {
$this->isValid = (filter_var($this->currentObject->value, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "$regex")))) ? true : false;
if (!$this->isValid) {
$this->setErrorMsg($errorMsg, self::$error_regex);
}
}
return $this;
}
我认为这会起作用,但我是否遗漏了任何字符?
^[a-zA-Z0-9\s&|&\.\!?\;\\-\<\>\/]*$
您可以使用以下函数来清理用户输入。自定义正则表达式函数可能有一些特殊情况。
sanitize
---------
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
wordsanitize
------------
$string = preg_replace('~\W+~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
charactersanitize
-----------------
$string = preg_replace('~[^A-Za-z_.]~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
numbersanitize
--------------
$string = preg_replace('~\D+~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
我正在尝试验证 TinyMCE 编辑器提供的富文本输入。我很清楚让自己对 XSS 等敞开大门,并希望解决这个问题。
我在使用以下代码对 POST 数据执行任何操作之前对其进行清理:
//sanitise POST array
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
然后我有一个自定义验证 class 来检查每个字段输入,现在它已经被清理过,但是...我不确定如何检查经过清理的 RTF 输入。例如,我正在使用 ctype-alpha 检查 alpha 输入 & filter_var($this->currentObject->value, FILTER_VALIDATE_EMAIL 检查有效的电子邮件地址,但我不确定要使用什么经过清理的 tinyMCE 字段。
我想我需要的可能是正则表达式?有谁知道检查 tinyMCE RTF 输入的正确表达式?我这样做的方式正确吗???
如果使用正则表达式,我可以使用下面的函数来 return 它是否有效:
//used to send a custom regex
function regex($regex, $errorMsg = null)
{
if ($this->isValid && (!empty($this->currentObject->value))) {
$this->isValid = (filter_var($this->currentObject->value, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "$regex")))) ? true : false;
if (!$this->isValid) {
$this->setErrorMsg($errorMsg, self::$error_regex);
}
}
return $this;
}
我认为这会起作用,但我是否遗漏了任何字符?
^[a-zA-Z0-9\s&|&\.\!?\;\\-\<\>\/]*$
您可以使用以下函数来清理用户输入。自定义正则表达式函数可能有一些特殊情况。
sanitize
---------
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
wordsanitize
------------
$string = preg_replace('~\W+~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
charactersanitize
-----------------
$string = preg_replace('~[^A-Za-z_.]~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');
numbersanitize
--------------
$string = preg_replace('~\D+~', '', $string);
htmlspecialchars(filter_var($string, FILTER_SANITIZE_STRING), ENT_QUOTES, 'UTF-8');