質問
perl -T
あなたはそれを使用していますか?それはあなたのPerlスクリプトのセキュリティホールを見つけるお手伝いをしていますか?
解決
もっと:)彼らは一つになる前に、それが にセキュリティ上の問題を停止します。これは、外部に露出した任意のスクリプト(つまり、任意のmod_perlのアプリ)で(私はPerlのプロジェクトに関与していたとき、数年前に)私たちはそれを使用するために使用される...当然のセキュリティ銀の弾丸ではなく、我々はそれが非常に有用であることが判明し、それ方針ました。これは、いくつかのチェックを行い、それが(何が自動化されたものになります)。
..便利ですPerlのセキュリティ - perlsecをのがあまりにも強く、それを推奨しています:
このフラグ[汚染モード]は強く、このようなCGIスクリプトなどのサーバプログラムと他の誰かに代わって任意のプログラムの実行のために提案されています。汚染モードがオンになったら、それはあなたのスクリプトの残りのためにです。
他のヒント
ほとんど間違いなく!
$ echo '`rm -rf /`' | perl -Te 'eval while <>' Insecure dependency in eval while running with -T switch at -e line 1, <> line 1.
ほぼ完全にtaintチェックするために専念している、あなたが使うべきかのマスタリングのPerlの「セキュア・プログラミングテクニック」の章これます。
多くの人々は、それはあなたを守り、あなたを教えてくれますが、彼らは微妙にそれについて嘘。それはあなたが注意する必要がありますあなたのコード内のいくつかの(唯一のいくつかの)スポットを見つけることができます開発ツールです。あなたのセキュリティ問題のすべてを解決することはないだろう。
私は、新しいコードを誰もが精通していることが開発されているときに汚染モードは最高の仕事だと思います。
あなたは下手に書かれている他の誰かのコードを持って、そしてあなたが汚染モードでそれを実行した場合 - Perlは死ぬのではなく「危険な」操作です汚すルールによって何を実行します。
汚染モードでは、いくつかの穴がすべてではなくパッチが適用されているのperl。 )(システム(「$のunfiltered_user_input」)が死んでしまうが、Perlはまだ(印刷汚染されたデータは、「安全」とみなされているため)一定の名前でファイルにデータunfiltered_user_input $を書き込み、システムでそのファイルを実行する可能性があります。しかし、何も、すべてを確認することはできません。
トレードオフは、従来のアプリでそれを使用するためにそこにあります。 Perlは汚染されたデータに危険な操作を見つけたとき、それは死んでしまう - 誰かが中に入ると、それは、アプリケーションが再び信頼性になる前に、必要とされているどのような正規表現、データをUNTAINTすることの意味を決定しなければならないことを意味します。
一部の人々がに(今の)安全でない、信頼性の高い、低コストを好むだろう - 、壊れた、セキュアな開発者を見つける必要があります。それは長い目で見れば良いthatsのではない...しかし、それは珍しいことではありません。