1

我最近在这里发布了一个问题;但是,在我得到的很好的答案中,我被告知我的连接查询不安全且已弃用。

$con = mysql_connect("localhost", "userX", "passX") or die('Could not connect to server');
    mysql_select_db("dbX", $con) or die('Could not connect to database');      
    $query="SELECT fieldX,filedX2 FROM tableX WHERE varX";
    $result=mysql_query($query);
    while($row=mysql_fetch_array($result,MYSQL_ASSOC))

显然,我从中学到的材料是旧的。所以我研究了这个问题并遇到了这两个项目:

1. “在实际实践中,最好将用户名和密码放在 Apache Web 服务器路径之外的文件夹中,这样就无法通过 Web 访问。”

2. “将用户名和密码放入不在Web应用程序文档根目录中的文件中”

<?php

include("connection.php");

$link = mysql_connect($connection_server, $connection_user,$connection_password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

?>


-----

/* --- Connection Variables ---*/

$connnection_server = "[server]";

$connection_database = "[db]";

$connection_user =  "[username]";

$connection_password = "[password]";

我知道这听起来像是一个愚蠢的问题(显然,我是新手),但是文档根是什么?“在文档根目录之外”和“在 Apache Web 服务器之外”是什么意思?

目前,在我学习的过程中,我只是在 MAMP 上,但是当我在商业服务器上使用时,比如 Godaddy's,这意味着什么?

另外,我假设

$connnection_server = "[server]";

$connection_database = "[db]";

$connection_user =  "[username]";

$connection_password = "[password]";

在上面的例子中意味着这些变量在一个单独的文件中(例如,connection_var.php),对吗?

提前感谢您的知识和帮助。

4

1 回答 1

3

文档根目录是浏览器可以直接从中请求文件或页面的最高目录(顶层)。举个例子:

http://example.com/index.php

index.php位于文档根目录中。浏览器无法请求更高级别。

http://example.com/images/mrcode.jpg

mrcode.jpg不在文档根目录中,因为它位于images目录中。

“在文档根目录之外”和“在 Apache Web 服务器之外”是什么意思?

文档根目录之外是指存储在此目录之上的文件,因此浏览器不能直接请求。例如,您的目录结构可能如下所示:

/websites/example.com/public_html/index.php

如果您要将数据库凭据存储在:

/websites/example.com/dbdetails.php

这将超出(或高于)文档根目录。将连接凭据存储在文档根目录中不被视为漏洞,但是将它们存储在外部可能会稍微好一些。PHP 仍然可以访问文档根目录之上的文件(假设您有权限)。共享主机通常允许您访问文档根目录之上的一级。

Your immediate problem is that you're using the deprecated mysql_* library. The problem with this is it is being removed from newer versions of PHP and so if you continue to use it, your applications will eventually become completely unusable. The MySQLi and PDO libraries also offer Prepared Statements which should be used instead of the escaping methods to prevent SQL Injection because they offer greater security. See here for a good PDO tutorial. If you were told your queries are unsafe then they probably contain SQL Injection vulnerabilities.

于 2013-01-07T18:56:20.490 回答