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))

どうやら、私が学んだ教材は古いようです。そこで、この問題を調べたところ、次の 2 つの項目が見つかりました。

1. 「実際には、Web 経由でアクセスできないように、ユーザー名とパスワードを Apache 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 などの商用サーバーにアクセスする場合、それはどういう意味ですか?

また、私は仮定しています

$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.jpgimagesディレクトリに存在するため、ドキュメント ルートにはありません。

「ドキュメント ルートの外側」および「Apache Web サーバーの外側」とはどういう意味ですか?

ドキュメント ルートの外側は、このディレクトリの上に格納されているファイルを参照するため、ブラウザから直接要求することはできません。たとえば、ディレクトリ構造は次のようになります。

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

データベース資格情報を次の場所に保存する場合:

/websites/example.com/dbdetails.php

これは、ドキュメント ルートの外 (または上) になります。接続資格情報をドキュメント ルート内に保存することは脆弱性とは見なされませんが、外部に保存することでわずかに改善される可能性があります。PHP は引き続きドキュメント ルートより上のファイルにアクセスできます (権限があると仮定します)。通常、共有ホストでは、ドキュメント ルートの 1 つ上のレベルにアクセスできます。

当面の問題は、非推奨のmysql_*ライブラリを使用していることです。これに関する問題は、PHP の新しいバージョンから削除されているため、引き続き使用すると、最終的にアプリケーションが完全に使用できなくなることです。MySQLiおよびPDOライブラリは、より優れたセキュリティを提供するため、 SQL インジェクションを防ぐためにエスケープ メソッドの代わりに使用する必要があるプリペアド ステートメントも提供します。優れた PDO チュートリアルについては、こちらを参照してください。クエリが安全でないと言われた場合、SQL インジェクションの脆弱性が含まれている可能性があります。

于 2013-01-07T18:56:20.490 に答える