大约有一天我正在寻找解决方案,但是我没有掌握所有必要的技能来了解我发现的是正确的还是解决方案。 那么,总之,在将post方法接收的文本存储到MySQL DB之前,我必须做的最小验证是什么? 感谢
答案 0 :(得分:1)
在准备好的陈述中使用PDO
(或mysqli
):
$st = $db->prepare('INSERT INTO test (x) VALUES (?)');
$st->execute(array($_POST['text']));
完成。
如果您想使用旧的mysql扩展,您可能希望使用mysql_real_escape_string
代替您在查询中插入的所有值。
答案 1 :(得分:1)
$connection = mysqli_connect('localhost', 'user', 'password');
//gets the post info
$text = $_POST['key'];
//removes the white spaces before and after the string
$text = trim($text);
// prepares the text for storing it in the database. Helps against MySQL injections.
$text = mysqli_real_escape_string($connection, $text);
所以我认为这些是最低限度的。您还需要检查来自POST的信息是否有效。例如,如果您希望收到号码但收到文本,则必须处理这些问题。
答案 2 :(得分:0)
从Web表单获取用户输入并将其存储到任何db时,主要关注的是注入SQL的可能性。使用预准备语句(由GhostGambler建议)可以帮助防止SQL注入。作为最低级别的保护,应该使用mysqli_real_escape_string,但请注意它不是最好的保护。 不推荐使用mysql接口,因此请使用mysqli或pdo。 准备好的语句和参数化查询可以提供适当的SQL注入保护。
答案 3 :(得分:0)
1)php提供了 filter_var 功能。这是最好的选择。您可以使用常量来检查值是Integer,String还是正确的电子邮件等。
例如:
$email=$_POST['email'];
$filter_email=filter_var($email,FILTER_VALIDATE_EMAIL);
如果过滤器失败,它将返回false。
2)然后,将数据插入到数据库中的最佳方法是使用预准备语句。它几乎消除了SQL注入的可能性。
您可以在此处阅读有关预先准备好的陈述Prepared Statements
3)你也可以去正则表达式
希望这有帮助