多くの PHP プログラムの主な弱点は、PHP 言語自体の問題ではなく、プログラマーのセキュリティ意識の低さが原因です。したがって、誤ったデータ送信による影響を発見するには、コードの各部分で起こり得る問題に常に注意を払う必要があります。
例 #1 危険な変数の使用法
<?php // 从用户目录中删除一个文件,或者……能删除更多的东西? unlink ($evil_var); // 记录用户的登陆,或者……能否在 /etc/passwd 添加数据? fwrite ($fp, $evil_var); // 执行一些普通的命令,或者……可以执行 rm -rf * ? system ($evil_var); exec ($evil_var); ?>
常にコードに注意して、クライアントから送信されたすべての変数が適切にチェックされていることを確認してから、いくつかの質問を自問してください:
このスクリプトは予期されるファイルにのみ影響を与えることができますか?
異常なデータは提出後に何らかの影響を与える可能性がありますか?
このスクリプトは意図しない目的に使用できますか?
このスクリプトを他のスクリプトと組み合わせて悪いことをすることはできますか?
すべての取引は適切に記録されていますか?
コードを記述するときに次の質問を自問してください。そうしないと、将来セキュリティを強化するためにコードを書き直す必要が生じる可能性があります。これらの問題に注意すれば、システムのセキュリティを完全に保証することはできませんが、少なくともセキュリティを向上させることはできます。
register_globals、magic_quotes、またはプログラミングをより便利にするその他の設定をオフにすることも検討してください。ただし、変数の正当性、ソース、値が台無しになります。開発中に、error_reporting(E_ALL) モードを使用すると、変数が使用前にチェックまたは初期化されているかどうかを確認し、異常なデータが台無しになるのを防ぐことができます。