【发布时间】: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