1

CGIプログラムがApacheユーザーとして実行されることがあることを私は知っています。また、CGIプログラムがデータファイルに書き込むために、ファイルを誰でも書き込み可能にすることができることも知っています。ただし、これは、サーバーにログオンしている他のユーザーが書き込み(または削除)したり、攻撃者が独自のCGIプログラムをそこにインストールしたりできることを意味します。

私が求めているのは、スクリプトがファイルに書き込めるようにするためのより安全な方法はありますか?

4

1 に答える 1

3

理論的根拠:CGIフォルダーとデータフォルダーを分離する

通常、cgiスクリプトは、誰でも書き込みできないのフォルダー(通常はcgi)に保存されます。このフォルダへの書き込みアクセス権を持っているのは、特権ユーザー(スクリプトを作成することになっている)だけです。cgi

他のファイルは、アクセス許可がより寛大な別のフォルダーに保存されます。
ただし、世界で書き込み可能にすることも良い考えではありません。フォルダにアクセスする理由があるユーザーのみがフォルダにアクセスできる必要があります。


ApacheでフォルダをcontaingCGIスクリプトとしてマークする:

ScriptAlias

このScriptAliasディレクティブにより、Apacheは、特定のフォルダーcgiに実行する必要のあるスクリプトが含まれているかどうかを知ることができます。

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

Apacheにそれらのフォルダ内のすべてのファイルを実行させ、それらがcgiファイルであることを期待します。

ExecCGI

:を使用して、 Apachecgiに特定のフォルダーでスクリプトを実行する権限を与えることができます。ExecCGI Option

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
</Directory>

次に、ディレクティブcgiを使用してスクリプトを別のファイルと区別する方法を示す必要があります。使用:AddHandler

AddHandler cgi-script .cgi

cgiスクリプトに拡張子があることを示します.cgi

より詳しい情報

CGIスクリプトの実行に関するApacheのドキュメントを参照してください。

于 2012-12-12T03:35:29.117 に答える