【问题标题】:Sanitize html inputs with php [duplicate]用php清理html输入[重复]
【发布时间】: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 扩展替换代码中的某些字符。这是一个输出函数,用于向浏览器发送数据时使用。您可以在从数据库中检索数据时解码这些扩展,但您必须记住在任何地方都对它们进行解码。如果您正确使用绑定参数(我们不知道,因为您没有发布该代码),您不需要清理进入数据库的数据...
  • ...您始终需要小心发送到浏览器的数据,但需要担心的是当您实际将数据发送到浏览器时。
  • 所以只是绑定参数而忘记这个函数?或者我可以使用其他功能来清理我的输入。

标签: php sql-injection sanitization


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 2012-10-15
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多