Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 要从消息中删除哪些字符?_Php_Validation - Fatal编程技术网

Php 要从消息中删除哪些字符?

Php 要从消息中删除哪些字符?,php,validation,Php,Validation,我很惊讶,我没能找出我需要从消息中去掉哪些字符才能保证我的应用程序的安全 我有一个php应用程序,大多数输入都是数字,但我正在为用户添加附加消息的功能,因此我需要清理消息并去除任何可能构成威胁的字符 我最初的反应是如果我这样做了 $message=addslashes(preg_replace('/[^a-zA-Z0-9\-,& $%\(\)#@!\'\"?.]/','',$_POST['message'])); $message=addslashes(preg\u replace(“/[^a-

我很惊讶,我没能找出我需要从消息中去掉哪些字符才能保证我的应用程序的安全

我有一个php应用程序,大多数输入都是数字,但我正在为用户添加附加消息的功能,因此我需要清理消息并去除任何可能构成威胁的字符

我最初的反应是如果我这样做了

$message=addslashes(preg_replace('/[^a-zA-Z0-9\-,& $%\(\)#@!\'\"?.]/','',$_POST['message'])); $message=addslashes(preg\u replace(“/[^a-zA-Z0-9-,&$%\(\)\@!“?.]/”,“,$”POST['message']);
我是安全的,但我还没有找到任何说明哪些字符会造成伤害,哪些字符会安全的东西。

我想说,至少一般来说,你不必从输入中删除任何字符

相反,您必须转义数据:

  • 将其发送到数据库时
    • 看,
    • 或准备的声明:
  • 将其发送到HTML输出时

不过,如果您允许用户输入HTML,您应该查看一下,以确保他们无法将任何恶意HTML代码注入您的网页:

HTML净化器是符合标准的 用PHP编写的HTML过滤器库。 HTML净化器不仅会删除所有 恶意代码(更好地称为 XSS)有一个经过彻底审核、安全但允许的白名单 还将确保您的文档 符合标准


不用清理数据,只需使用准备好的语句进行数据库交互。PDO消除了手动清理所有输入的需要


关于输入过滤已经有很多问题。请看一下本页的右侧。例如,谢谢Felix,但是(我看到的)这些问题似乎都没有真正回答“什么字符是威胁。同时,HTML净化器似乎是一条出路,我以前从未听说过。”[…]以确保他们能够注入任何恶意HTML代码[…]”–你不是说相反吗?@Gumbo:ouch;我当然是指相反;-);我已经编辑了我的答案,以更正;;谢谢你的评论!htmlspecialchars对于UTF-8编码字符集来说可能是危险的,但除了数据库交互之外,难道没有其他问题吗?