5

PHPスクリプトにサーバー上のファイルに出力を書き込んでもらいたいときはいつでも、否定的なコメントに直面することがよくあります。

fopen()、、fwrite()およびfclose()関数を使用します。

これを実現する方法を私が知っている唯一の方法は、出力ファイルのアクセス許可を0666に設定するか、「nobody」(Apache WebサーバーでPHPを実行するユーザー)が所有するようにすることです。

では、「0666」または「誰も所有していない」がセキュリティリスクである場合、PHPスクリプトにファイルへの書き込みを正常かつ安全に許可するにはどうすればよいでしょうか。

このトピックに関するガイダンスを共有していただきありがとうございます。

4

2 に答える 2

3

アップロード後にPHPからファイルにアクセスする必要がある場合は、Webサーバー(この場合はApache)がファイルにアクセスできるようにする権限を付けてファイルを保存する必要があります。人々が話すリスクは、サイト上の一部のスクリプトがだまされてファイルを提供する可能性があることです。これは架空のリスクですが、多くのコンテンツ管理システムで発生しています。このリスクを軽減するには:

  1. ファイル名とパスを簡単に推測できないようにします。ユーザーがへのパスを持っている場合は、同様getfile.php?file=1.txtにあることを簡単に推測できます。2.txt名前を暗号化するか、シーケンスを解除します。
  2. ログインしたユーザー、リソースへの承認など、ファイルを提供するスクリプトを作成し、パスを含むファイル名からすべてを削除して、への不正な参照などを回避し/etc/passwdます。

ファイルを削除して提供したり、PHP経由で再度アクセスしたりする必要がない場合は、さらにいくつかのオプションがあります。chmodまたはコマンドを使用chownして、apacheユーザーが読み取れないようにします。余分なパラノイアになりたい場合は、cronスクリプトでファイルをPHPソース内の不明な場所に移動(および名前変更)してください。少なくとも、サーバーがハッキングされた場合、侵入者はディレクトリに直接侵入することはできませんが、オペレーティングシステムのセキュリティについて議論が進むところまで来ています。

于 2012-02-13T14:20:10.723 に答える