【发布时间】:2015-12-20 21:41:09
【问题描述】:
我正在寻找最安全的方法来清理用户输入并避免 PHP 在线应用程序的安全风险。
到目前为止,我使用 TRIM + mysqli_real_escape_string 来清理空格和清理内容,如下所示(字符串数据):
$ca_title = trim(mysqli_real_escape_string($con,$_POST['ca_name']));
由于持续不断的“不要直接访问超全局 $_post 数组”Netbeans 建议,我对此进行了搜索,发现了另一种消毒方式,我怀疑它是否与我迄今为止所做的相同:
$ca_title = filter_input(INPUT_POST, 'ca_name', FILTER_SANITIZE_STRING);
查看 PHP 文档后,我必须说我发现两者之间没有太大区别,因此我不能拒绝最安全的方法。你能给我建议吗?
【问题讨论】:
-
最佳,根据哪个标准?
-
主要清理目标:创建一个没有注入的安全后端
-
@HannesJohansson 我发现了这个,我猜这是最好的问题之一:stackoverflow.com/questions/15102796/when-to-use-filter-input
-
当您将数据从视图传递到控制器时,您只需使用 $_POST 一次,然后从那里 - 在控制器中 - 使用方法的参数(即别名 $_POST 数组)。消除 $_POST 的过度使用。此外,Netbeans 将再次高兴。
-
您正在使用 MySQLi - 为什么不使用准备好的语句?您甚至可以粘贴来自
$_POST的东西,而无需担心任何事情。另外,为什么要在插入前修剪?我通常会保持原始字符串完好无损,并在从数据库中获取它后对其进行操作——这样我就可以在任何时候用它做任何我想做的事情。
标签: php sanitization