我正在设置一个Web应用程序。
使用mysqli_real_escape_string()
和mysqli_set_charset('utf8')
来可靠地防止SQL注入而不使用准备好的语句是否可靠?
我已经尝试过单独使用mysqli_real_escape_string()
,但发现它容易受到SQL注入的攻击。我以为也许我设置一个字符集utf8就能解决?
我在想这样的事情
mysqli_set_charset($conn, 'utf8');
$email = mysqli_real_escape_string($conn, $_POST['email']);
mysqli_query($conn,"INSERT INTO email_list VALUES (NULL, '".$email."');");
如果我完全错了,我正在寻找一种可靠的方法来防止SQL注入而没有准备好的语句
我之所以避免使用准备好的语句,是因为对于一个查询来说,这一切似乎都太复杂了。
谢谢!
答案 0 :(得分:-5)
我建议使用filter_input方法:
https://www.php.net/manual/en/function.filter-input.php
https://www.php.net/manual/en/filter.filters.php
例如:
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);