1

我创建了一个网站,我只显示我的数据库表中的项目,我将变量从一个页面传递到另一个页面以显示某些项目,我的网站中的表项目没有添加、删除或编辑只是显示信息。

$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";

我只是偏执,还是有办法保护这些连接到服务器和数据库的信息?

4

3 回答 3

4

在没有访问您的服务器的情况下,任何人都无法查看数据库连接信息(因为 PHP 在服务器上执行,而不是发送到用户的浏览器)。话虽如此,如果您担心,您可能需要考虑将这些变量放在配置文件中,并对其进行加密。

于 2012-11-05T00:43:08.613 回答
1

如果您的目标是严格防止通过 $aaa 变量进行注入,那么您应该没问题。正如@MikeG 指出的那样,您可能应该将连接信息移动到Web 根目录之外的单独配置文件中以提高安全性(如果有人获得您的数据库凭据,您无需担心注入)。

于 2012-11-05T00:45:27.437 回答
1

没关系,但是如果您对此感到担忧,只需使用mysql_real_escape_string转义所有传递给数据库的值,然后将 intval/floatval 用于数值。

这不是完美的安全性,但总比不这样做要好。

于 2012-11-05T03:09:01.817 回答