2

より安全であると考えられているものを知りたい

include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';

include '../config/special.php';

スタック オーバーフローや Web 上の他の場所で、ドキュメント ルートの外部にデータを保存するようにという多くの回答を目にします。私はまた、phpにファイルを含めるように言う多くのチュートリアルを見てきました

include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';

フォルダのアクセス許可を drwxr-x-wx のようなものに変更して、URL のパスにアクセスしようとしている場合に禁止される場合 (または、これはまだリスクと見なされます)、上記のことを行っても問題ありませんか?以下のように、設定をルート フォルダの上に移動することをお勧めします。

include '../config/special.php';
4

2 に答える 2

3

答えは、「サーバーの残りの部分はどの程度安全か」です。

Apache リモート呼び出しからのディレクトリへのアクセスを禁止すると、ファイルの保存場所に関係なく、問題の半分が解決されます。ただし、これはセキュリティの特効薬ではありません。もしそうなら、人々はそれについて知っているでしょう!(私は 1 か月前に私が働いている場所でこれを証明しました。主任開発者の 1 人は、webroot 以外のサブフォルダーにデータを保存することですべてが安全になると考えていました。彼は自分が作成したファイル エクスプローラーについて、さらに重要なことに、それがどのようにできるのかについてほとんど知りませんでした。パラメータとして取り../、それに応じて動作します... 30秒後、データベースがダンプされました-開発環境で)。

セキュリティの鍵は、すべてを強化することです。ユーザーにファイルの読み取りを許可する場合は、..and...演算子とそれに関連するものをすべて禁止して、ユーザーがディレクトリ チェーンをたどることができないようにします。外部ユーザーがファイルを読み取れないようにします ( .htaccessApache を使用)。これにより、ほとんどの人が思いとどまるはずです。

ただし、up-one チェーンと up-two チェーンをサニタイズする方法によっては、さらに多くの問題が発生する可能性があります。私の同僚の例をもう一度見てみましょう: ダンプの後、彼はこれらの代替品を運用することに決めました:

.. => .
... => .

(順番大事)

彼は私が入れたことをほとんど知りませんでした.... . 最初の正規表現はこれを .. に変換し、2 番目の正規表現は何もしません。ビンゴ、データベースがダンプされました。また。

于 2012-11-28T10:42:17.223 に答える
0

PHP の質問に対する率直な回答を探している場合は、より広範で簡潔なメモを参照してください。

上記のいずれも安全ではありません。単純にファイルをインクルードすることは、どの PHP アプリケーションにおいても正常で保証されたアクションであり、上記の方法のいずれによってもセキュリティが影響を受けることはありません。

セキュリティについて詳しく知りたい場合は、サーバー/アプリケーションが安全であることを確認する方法についてさらに読むことをお勧めします。

ひょっとしたら、これは読みごたえがあるかもしれません。

http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html

于 2012-11-28T10:48:06.683 に答える