Php 对于许多post值,使用foreach和mysqli\u real\u escape\u字符串
我有一个收集大量数据的页面,在将sql查询插入数据库之前,我需要转义这些数据 我在SQL查询之前写下:Php 对于许多post值,使用foreach和mysqli\u real\u escape\u字符串,php,mysqli,Php,Mysqli,我有一个收集大量数据的页面,在将sql查询插入数据库之前,我需要转义这些数据 我在SQL查询之前写下: foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v); 我的$conn是: $conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz'); 仍然有效,但我不确定是否安全。这是处理POST变量的极其错误的方法。 在很多方面都是错误的 而且肯定不
foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v);
我的$conn是:
$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz');
仍然有效,但我不确定是否安全。这是处理POST变量的极其错误的方法。 在很多方面都是错误的 而且肯定不安全 根据您在查询中使用POST数据的方式,此代码可能会被更正,或者根本不可用且不安全 正如巴尔马所说,你应该使用事先准备好的陈述。如果您也为insert数据准备了一条语句,则效果更好 这应该是安全的
$query=$conn->prepare("select * from yourtable where colum= ? and column2 = ? ");
$query->bind_param('ss', $_POST['var1'],$_POST['var2'] );
试试这个
$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz');
$ARR_DATA = array();
foreach($_POST as $k => $v)
{
$ARR_DATA[$k] = mysqli_real_escape_string($conn,$v); // store your escaped value in $ARR_DATA
}
现在你可以使用
$ARR\u DATA
值,而不是在任何地方使用$\u POST
。这应该可以,但如果使用参数化查询会更好。我喜欢你的名字是你的常识:-)你能解释更多吗,它怎么会不安全?用这么多方法把它们都列在这里。严格地说,您喜欢使用的函数与任何安全性都毫无关系。好吧,您的意思是mysqli_real_escape_字符串不利于安全性,例如针对XSS攻击。我确实使用绑定,但我只是问你是指foreach方法不好,还是mysqli_escape_字符串。谢谢你的解释,这还不错。这不适用于安全问题。请不要发布危险和易注射的代码,谢谢。其中的危险是什么?请参考关于该主题的其他答案,这些答案已经被多次回答和讨论过,谢谢。