我创建了一个网站,我只显示我的数据库表中的项目,我将变量从一个页面传递到另一个页面以显示某些项目,没有添加,删除或编辑我的网站中的表项目只是显示信息。
$aaa = _POST['aaa'];
$databasehost = "localhost";
$databasename = "mydb";
$databaseusername = "user";
$databasepassword = "password";
// Connect to the database server
$dbcnx = @mysql_connect($databasehost, $databaseusername, $databasepassword);
if (!$dbcnx) {
echo( "<font color='red'><P>can't connect to server.</P></font>" );
exit();
}
// Select the database
if (! @mysql_select_db($databasename) ) {
echo( "<font color='red'><P>can't connect to db </P></font>");
exit();
}
$aaa = mysql_real_escape_string($aaa)
// and with $aaa I do my query
我已经读过使用mysql_real_escape_string()来保护我的变量我停止了对查询的任何注入,但是我感到很脆弱:
$databasehost = "localhost";
$databasename = "mydb";
$databaseusername = "user";
$databasepassword = "password";
我是偏执狂还是有办法保护连接到服务器和数据库的这些信息?
答案 0 :(得分:4)
如果没有访问您的服务器,任何人都无法查看数据库连接信息(因为PHP在服务器上执行而不是发送到用户的浏览器)。话虽这么说,如果您担心这一点,您可能需要考虑将这些变量放在配置文件中,并加密它们。
答案 1 :(得分:1)
如果你的目标是通过$ aaa变量严格防止注射,你应该没问题。正如@MikeG指出的那样,您可能应该将连接信息移动到Web根目录之外的单独配置文件中以提高安全性(如果有人获取您的数据库凭据,则无需担心注入)。
答案 2 :(得分:1)
它应该没关系,但是如果你关心它,只需转义传递给数据库的所有值mysql_real_escape_string表示字符串,并将intval / floatval作为数值。
这不是完美的安全性,但最好不要这样做。