【问题标题】:Using & validating RTF input after using FILTER_SANITIZE_FULL_SPECIAL_CHARS使用 FILTER_SANITIZE_FULL_SPECIAL_CHARS 后使用 & 验证 RTF 输入
【发布时间】:2020-08-24 23:21:35
【问题描述】:

我正在尝试验证 TinyMCE 编辑器提供的富文本输入。我非常清楚自己对 XSS 等持开放态度,并希望做到这一点。

我在使用以下代码对 POST 数据进行任何处理之前对其进行清理:

//sanitise POST array
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

然后我有一个自定义验证类来检查每个字段输入,现在它已被清理,但是......我不确定如何检查已清理的 RTF 输入。例如,我使用 ctype-alpha 来检查 alpha 输入和 filter_var($this->currentObject->value, FILTER_VALIDATE_EMAIL 来检查有效的电子邮件地址,但我不确定该用于净化的 tinyMCE 字段。

我想我可能需要一个正则表达式?有谁知道检查 tinyMCE RTF 输入的正确表达式?我这样做对吗???

如果使用正则表达式,我可以使用下面的函数来返回它是否有效:

//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&amp;|&\.\!?\;\\\-\<\>\/]*$

【问题讨论】:

  • 我不熟悉 TinyMCE。它会生成 HTML 还是 RTF?在第一种情况下,FILTER_SANITIZE_FULL_SPECIAL_CHARS 基本上恢复了编辑器的工作(没有多大意义)。在第二种情况下,您甚至没有使用适当的工具系列,因为 RTF 与 HTML 没有任何关系。

标签: php validation richtextbox


【解决方案1】:

您可以使用以下函数来清理用户输入。自定义正则表达式函数可能有一些极端情况。

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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多