为了账号安全,请及时绑定邮箱和手机立即绑定

使用 FILTER_SANITIZE_FULL_SPECIAL_CHARS 后使用并验证 RTF

使用 FILTER_SANITIZE_FULL_SPECIAL_CHARS 后使用并验证 RTF

PHP
慕哥9229398 2023-03-04 14:49: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 regexfunction 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;|&\.\!?\;\\\-\<\>\/]*$
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

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


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



查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信