如果以下代码存储在www.examples.com/test.php 中
mysql_connect("localhost", "user", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$result = mysql_query("SELECT * FROM table");
...
密码是否安全?如果没有,防止对信息进行不必要的访问的最佳做法是什么?谢谢
只要没有人可以访问test.php的文本内容,它就很安全。一个合理的最佳实践是将凭据存储在访问用户无法访问的地方,这样,如果example.com
的内容放在文件夹/some/path/to/www-data
中,则可以将文件放在其他地方,如/some/path/to/credentials.php
。这样,网络服务器仍然可以加载文件,但外部用户将无法访问它
此外,当我们讨论MySQL/PHP最佳实践时,请注意mysql_
函数已经被弃用,这是有充分理由的。相反,我建议您使用mysqli_
(其中I表示改进)或PDO
。您可以在这里阅读更多关于它的信息:如何防止PHP中的SQL注入?
一种解决方案是将.inc文件放在非根目录中并包含此文件,因为您可以在require和include 中使用文件路径
<?php
$host = 'example.org';
$username = 'myuser';
$password = 'mypass';
$db = mysql_connect($host, $username, $password);
?>
如果必须将其放在根文件夹中,则对httpd.conf进行一些修改可以应用一些额外的安全性(假设您使用的是apache)
<Files ~ "'.inc$">
Order allow,deny
Deny from all
</Files>
PHP是一种服务器端语言,这意味着客户端设备永远不会真正看到任何PHP代码。
这意味着,您拥有的任何密码都是完全安全的,不受客户端设备的影响。
Web服务器的特权用户仍然可以访问包含登录信息的文件。