我有一个收集许多数据的页面,我需要在将SQL查询插入db之前转义这些数据。
我在SQL查询之前写这个:
foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v);
我的$ conn是:
$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz');
仍在工作,但我不确定它是否安全。
答案 0 :(得分:2)
这是处理POST变量的非常错误的方式。 在很多方面都错了。
当然这不安全。
取决于您在查询中使用POST数据的方式,此代码可以更正,或者可能无法使用且不安全。
巴马尔说,你应该使用准备好的陈述。如果您还有插入数据的预准备语句,那就更好了。
答案 1 :(得分:0)
这应该是安全的。
$query=$conn->prepare("select * from yourtable where colum= ? and column2 = ? ");
$query->bind_param('ss', $_POST['var1'],$_POST['var2'] );
答案 2 :(得分:-2)
试试这个
$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_DATA
值,而不是在任何地方使用$_POST
。