2011-03-09 7 views
2

私はウェブサイト上でPHPスクリプトを実行しており、ユーザからの入力を受け取り、電子メールで送信します。私はタグとスラッシュを取り除いて入力データをサニタイズしています。しかし、私はデータベースにデータを入力するためにこの入力を使用していませんし、インクルード、exec、またはevalなどを使用していません。私がこれらの危険なことをやっていないなら、GET、POST、COOKIESの配列を通して実行可能なPHPコードを注入することは可能でしょうか?私は答えが「いいえ」であることはほぼ肯定的ですが、経験豊かな人に尋ねる価値があると思いました。 http://phpsense.com/php/php-mail.html 注:あなたは電子メールの本文に データだけ供給し、ユーザが使用している場合は、 はその後、あなたはそれから安全なはず:)PHPコードインジェクション

答えて

1

まあ先生は、私はあなたがEmail Injection

防ぐためにどのように導入することができます。しかし、 私の推薦はNEVER trust ユーザ入力データです。

+0

これはヘッダーを挿入していますが、サーバー上でPHPコードを実行できません。 – Cyclone

+0

誰かが迷惑メールのフォームを解読してサーバーがブラックリストに登録されている場合、そのサーバーからの電子メールは迷惑メールとマークされます。脆弱性はどこにでもあります。 – amosrivera

+0

うわー、あなたたちはボールに乗っています。私はすでにわずか10分後に6つの答えを得ました。 :)「メールインジェクション」へのリンクをありがとうございました。私はこれまで聞いたことがなかった。確かめます。 – Ben

1

SQLステートメントで入力を使用せず、ファイルに書き込まず、evalやexecを使用しないか、またはそれを含めない場合は、実行可能なPHPコードを挿入することはできません。

1

ソースが表示されていないと、だれも確実にはわかりませんが、コード実行は通常、evalを使用すると発生します。また、ユーザーが変更できる文字列のパスにincludeまたはrequireを使用するかどうかを確認してください。

ああ、おそらくhttp://www.securephpwiki.com/index.php/Email_Injection

+0

まさにそれ。あなたがしているのは入力を直接送信するだけであれば、何も心配する必要はありません。 1.インジェクションは、データベースにデータを入力するときにのみ発生します。 だからあなたは大丈夫でしょう。電子メールプロバイダは、適切と思われる電子メールを処理します。 htmlを送信したくない場合や、不正な単語のフィルタリングなどの追加処理を行わない場合を除いて、入力をフィルタリングまたはストリップする必要はありません。 2.ユーザー入力を使用してファイルをインクルードしようとしているときのみ、ファイルのトラバーサルが発生する。 3.ユーザーにデータをエコーし​​たときのXSS ただし、電子メールが提供されていることを確認する。それとも適切に対処する – frostymarvelous

0

あなたに影響を与えることは、リスクを生み出す条件の面で、この問題を考えると、むしろかかわらず、コンテキストの予防措置を実行することではない、本当に最高のヘッダインジェクションがあります。

しかし、一般的には、サーバー上のどこにも保存されていないユーザーが送信したデータは、リクエストの最後にガベージコレクションされます(例では、メールで送信され、GCed )。しかし、全体的に注入することは非常に大きな問題であり、それを広範なストロークで考えるのは最善ではありません。確かに、ユーザーはPHPを注入できないかもしれませんが、Webアプリケーションにコメントを投稿する単純なセキュリティ保護されていないテキストエリアでさえ、クライアントサイドのXSSまであなたを開くことができます。練習に入る方が良い。

可能な限り一般原則としてサニタイズしてください。また、XSSフィルタリングについては、HTMLPurifierについて言及する必要があります。あなたのフォームはメールを送信するために使用されているので、自動送信を防ぐために入力にもCAPTCHAを置く必要があります。あなたのメールコマンドにもPHPMailerを提案してもよろしいですか?

1

私が考えることができるのは、register_globalsをオンにしていることだけです。これは高いリスクになります。

あなたは上のレジスタグローバルで次のURLを持っている場合例えば:http://mysite/page/php?_SESSION=0それはPHPセッションのグローバルを上書きする原因となります

var_dump($_SESSION); // = 0 

あなたが外を見るしなければならないそうでなければそのちょうど電子メールの注入、素晴らしいですリンクは@amosrivera

1

あなたはすでに多くのことを世話しています。しかし、コードインジェクションに関する私の経験を共有したいだけです。数ヶ月前、私は自分のウェブサイトのindex.phpファイルに奇妙なコード行を見つけました。その時、私はこれらの行を削除したばかりですが、1週間ほど後に元に戻りました。その後、私は多くの研究の結果、私のFTPアプリケーションから私のFTP ID/Pwdをハックしたのは私のコンピュータ上のいくつかの悪意のあるソフトウェアに起因することが分かった。それはindex.phpのコードを変更していました。その後、私は自分のコンピュータにOSを再インストールし、問題は解決されました。これはコードの注入の可能性があります。