Php 检查用户输入和防止mysql注入的方法有哪些?

Php 检查用户输入和防止mysql注入的方法有哪些?,php,mysql,forms,input,Php,Mysql,Forms,Input,“我们永远不应该相信用户的输入”,这是我在网上的某个地方读到的 目前我有一个网络表单,他们输入用户名和电子邮件。对于用户名字段,如何控制、检查和防止mysql注入??目前,在我的php脚本中,我只执行以下操作: $username = mysql_real_escape_string($_POST['username']); // prevent mysql injection 我看了一些教程,在mysql_real_escape_string函数之前,它们包括了其他函数,如,htmlenti

“我们永远不应该相信用户的输入”,这是我在网上的某个地方读到的

目前我有一个网络表单,他们输入用户名和电子邮件。对于用户名字段,如何控制、检查和防止mysql注入??目前,在我的php脚本中,我只执行以下操作:

$username = mysql_real_escape_string($_POST['username']); // prevent mysql injection
我看了一些教程,在mysql_real_escape_string函数之前,它们包括了其他函数,如,htmlentities等(不记得它是什么,我现在找不到了,叹气)

在mysql\u real\u escape\u string之前必须包含所谓的“htmlentities”函数吗

您通常使用什么方法检查用户的输入数据

哦,是的,还有一些其他功能:

stripslashes();
serialize();
urlencode();

我必须包括这些吗?

就将数据放入数据库而言,你做得对。您可以抵御SQL注入攻击


htmlspecialchars()
htmlspecialchars()
与SQL注入攻击无关;它们与攻击有关,这是你应该研究的另一个主题,如果你将用户输入显示回web,这也是一个相关的问题。

像@chaos said是正确的


您还可以使用数据库抽象层,如pdo,它将为您转义参数

您还可以考虑使用(我认为相当于SQL Server的参数化查询),这将进一步减少攻击面。

请在提出新问题之前搜索。我自己说得再好不过了。除了sql注入和XSS之外,还有哪些攻击??如果我包括htmlentities()和htmlspecialchars(),它会阻止XSS攻击吗?对于其他形式的攻击,请参阅以下问题:。htmlspecialchars()和htmlspecialchars()应该在生成输出而不是接收输入时使用,并且不能同时使用两者。为了对这些方法中的任何一种真正保护你抱有很大的希望,你需要少把它们当作魔法仪式来对待,多了解它们的作用,以及为什么和如何应用它们。