私はただ興味がありましたが、LAMP環境SSI
でPHPの代わりに使用する正当な理由はありますか?include
私はそれを支持する良い議論を本当に考えることはできません。
1 に答える
TL;DR: SSI を使用しないでください。100% 静的 HTML のみを含める場合は、(別のinclude()
ものでも何でもなく) readfile()
.. を使用include()
します。
SSI インクルードは、特に Apache に依存しているため (nginx に SSI を読み取らせてみてください.. それは面白くありません)、利点がまったくないため、大きな問題になる可能性があります。
問題のファイルが SSI に含まれるか、PHP に含まれるかに関係なく、書き込み権限が安全でない場合、または何らかの理由で信頼できないソースがファイルに書き込むことができる場合、それは大きな問題になります。include()
PHPコードを実行している ときは、覚えておいてください。
exec も実行できる SSI ディレクティブがあります ( #exec
)。これも危険ですが、PHP 自体よりも範囲が限定されている可能性があります (または、特定の状況に大きく依存し、主観的であるため、さらに危険である可能性があります)。
ただし、インクルードしたい問題のファイルに PHP コードが含まれておらず、今後も含まれない場合は、 を使用せずinclude()
、代わりに次を使用してください。
echo file_get_contents('filename.html');
何も実行されないため、これははるかに安全です。または、readfile を使用することもできます。これは、含まれる非常に大きな (10MB 以上) ファイルを処理する場合により効率的です。
readfile('filename.html');
したがって、SSI の代わりに PHP を使用する必要があるというのは、私のわずかな意見かもしれませんが、経験から、SSI は管理不能になる可能性があり、少なくともfile_get_contents()
orよりもメリットがないことがわかります。コード(良いか悪いか)、実行されます。readfile()
include()