用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输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法通过将 php 保存到数据库中来清理 HTML 代码? [复制]