我对PHP很陌生,并且我正在尝试在使表单安全的方面学到更多知识,这样我的数据库就更难以通过SQL注入等方式搞砸了。我们公司的当前网络程序员/ php家伙在短时间内退出,所以我的老板暂时把我放在php程序员的位置,在前一个程序员下只进行了一周的训练(我做了大量的html和css工作,但没有php事先),直到他们找到真正的替代品。
无论如何,我读到使用mysql_query()
是一个折旧的函数,应该避免使用它,因为该方法很容易受到攻击。我看到我的两个选择是现在使用PDO或MySQLi。作为PHP的新手,我无法确定我需要做什么才能转换我正在使用的代码(从请求中发送信息以及在网站上的报价表格并将其存储在数据库中,以防止电子邮件出现故障)通过PDO或MySQLi将数据发送到数据库的更安全的方法。
我正在使用的当前代码行是:
$query = mysql_query("insert into request_for_quote(rfq_company_name, rfq_name, rfq_email, rfq_phone, rfq_end_user) values ('$rfqCompanyName', '$rfqName', '$rfqEmail', '$rfqPhone', '$rfqEndUser')");
主要由$ _POST变量提供支持。
$rfqName = mysql_real_escape_string($_POST['rfq_name']);
$rfqEmail = filter_var($_POST['rfq_email'], FILTER_VALIDATE_EMAIL);
$rfqPhone = mysql_real_escape_string($_POST['rfq_phone']);
$rfqCompanyName = mysql_real_escape_string($_POST['rfq_company_name']);
$rfqEndUser = mysql_real_escape_string($_POST['rfq_end_user']);
现在,我的代码完成了我所需要的,它似乎极易受到数据库攻击,我想学习如何修复它,但似乎我在网上找到的所有示例都没有使用“将X
,Y
和Z
变量”设置为表格列A
,B
,C
“。< / p>
我是否进行了任何简单的更改,以使我的数据库提交查询更安全?
答案 0 :(得分:0)
几个月前我曾写过一些类似问题的答案,但我现在无法找到它。
找到mysql_
并替换为mysqli_
,替换("SELECT
...并在括号后面插入($dbLinkIdentifier, "SELECT
...其中$var
是与DB的连接。这是程序化的MySQLi,
初始链接$dbLinkIdentifier
是mysqli_connect()
构造,因为您可以识别多个数据库连接,每个连接都有自己的$var
。
这是一个程序化的MySQLi格式/布局。如果你想转移到结构更复杂的OO MySQLi,但整体上更好。