用php清理html输入[重复]

Posted

技术标签:

【中文标题】用php清理html输入[重复]【英文标题】:Sanitize html inputs with php [duplicate] 【发布时间】:2021-12-25 06:36:27 【问题描述】:

我正在使用 php,我想问一下我用来清理输入的功能是否足够好,可以防止 sql 注入和其他可能通过输入发生的恶意内容。


public function test_input($data)

    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;

这是我希望你们评价我的标准:

这是清理用户输入的最有效方法吗?

它是否足够好地清理输入以阻止恶意代码进入我的数据库?

另外,这只是一个奖励,但如果我清理用户的输入,我还需要清理其他任何内容吗?在将用户参数输入数据库之前,我已经绑定了用户参数。

【问题讨论】:

我不知道你从哪里得到这个,但它没有任何价值,并且会破坏你的数据,启动。根本不要使用这个功能。一定要了解prepared statements,并使用它们来代替。 @TangentiallyPerpendicular 它究竟是如何破坏我的代码的?我正在使用 PDO,并且我已经使用绑定。我只是在输入的数据上使用此函数,然后再将其发送到数据库进行处理。 stripslashes() 从输入中删除字符。您无法知道这些斜线是否重要,也无法在以后替换它们。 htmlspecialchars() 用 HTML 扩展替换代码中的某些字符。这是一个输出函数,用于向浏览器发送数据时使用。您可以在从数据库中检索数据时解码这些扩展,但您必须记住在任何地方都对它们进行解码。如果您正确使用绑定参数(我们不知道,因为您没有发布该代码),您不需要清理进入数据库的数据... ...您始终需要小心发送到浏览器的数据,但需要担心的是当您实际将数据发送到浏览器时。 所以只是绑定参数而忘记这个函数?或者我可以使用其他功能来清理我的输入。 【参考方案1】:

验证主要取决于您网站的上下文,应确认哪些内容以尽可能保持数据库一致。 还有一些类似于全局或公共的验证,例如 trim() 和 stripslashes()

验证的主要功能是检查将存储在数据库中并在将来使用的用户输入,例如登录或注册时的电子邮件或电话号码和用户密码。 您应该验证电话号码是否为数字且长度仅为 12。或验证电子邮件格式是否正确。

关于用于验证的内容,您可以搜索: 过滤器在这里https://www.w3schools.com/php/php_filter.asp,

常规体验在这里https://www.w3schools.com/php/php_regex.asp

其他方法是使用字符串函数:这里是https://www.w3schools.com/php/php_ref_string.asp

【讨论】:

以上是关于用php清理html输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

清理Angular2中的输入[重复]

使用 PHP 清理 URL [重复]

有没有办法通过将 php 保存到数据库中来清理 HTML 代码? [复制]

用php发布数据[重复]

HTML使用没有数据库或php的<form>获取输入[重复]

使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]