CGIプログラムがApacheユーザーとして実行されることがあることを私は知っています。また、CGIプログラムがデータファイルに書き込むために、ファイルを誰でも書き込み可能にすることができることも知っています。ただし、これは、サーバーにログオンしている他のユーザーが書き込み(または削除)したり、攻撃者が独自のCGIプログラムをそこにインストールしたりできることを意味します。
私が求めているのは、スクリプトがファイルに書き込めるようにするためのより安全な方法はありますか?
通常、cgi
スクリプトは、誰でも書き込みできない別のフォルダー(通常はcgi
)に保存されます。このフォルダへの書き込みアクセス権を持っているのは、特権ユーザー(スクリプトを作成することになっている)だけです。cgi
他のファイルは、アクセス許可がより寛大な別のフォルダーに保存されます。
ただし、世界で書き込み可能にすることも良い考えではありません。フォルダにアクセスする理由があるユーザーのみがフォルダにアクセスできる必要があります。
このScriptAlias
ディレクティブにより、Apacheは、特定のフォルダーcgi
に実行する必要のあるスクリプトが含まれているかどうかを知ることができます。
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
Apacheにそれらのフォルダ内のすべてのファイルを実行させ、それらがcgi
ファイルであることを期待します。
:を使用して、 Apachecgi
に特定のフォルダーでスクリプトを実行する権限を与えることができます。ExecCGI
Option
<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>
次に、ディレクティブcgi
を使用してスクリプトを別のファイルと区別する方法を示す必要があります。使用:AddHandler
AddHandler cgi-script .cgi
cgi
スクリプトに拡張子があることを示します.cgi
CGIスクリプトの実行に関するApacheのドキュメントを参照してください。