3

などについては理解しmysql_real_escape_stringていますが、メールを送信するだけの場合はどうなりますか?

フォームとテキストボックスがありますが、$_POSTデータをユーザーに直接メールで送信するだけで脆弱性はありますか? 私は彼らがPHPを実行することはできないと思います..または、Webアドレスから実行する場合はできますか? 私はわかりません。

4

2 に答える 2

5

If it is being sent directly to an email then it will be fine. If it is being stored in a database to be displayed on an administrator page such as a helpdesk, etc. then it will need to be escaped for both html output and mysql. You can escape mysql using a number of functions:

That said because Emails can contain HTML, if you don't want to receive emails that people have put bogus HTML in such as <blink> (Which is really annoying) then you can use htmlspecialchars() : http://php.net/manual/en/function.htmlspecialchars.php

If you are worried about Javascript in emails then using htmlspecialchars() noted above will escape this also.

于 2012-11-14T13:11:50.167 に答える
2

問題は、ユーザー入力を信頼しないことです。最大の問題は、 POST変数からメール アドレスまたは BCC を設定する場合です。リクエストに任意の電子メールアドレスを設定できること。

ただし、フォームを介してリンクなどをユーザーに送信することは可能です。このためには、キャプチャを実装する必要があります。ボットが、定義された値を含むフォームを誰にも送信できないこと。

最後の解決策は、フォーム内の非表示のテキスト フィールドです。CSSで隠すことができます。フィールドが空でない場合は、ボットが入力したことがわかります。

しかし、POST 変数をhtmlspecialchars()でエスケープすると良いと思います

したがって、フォームを保護する可能性はたくさんあります。それらの 1 つだけを使用するのではなく、ユーザーを信頼する必要があります。

于 2012-11-14T13:22:59.773 に答える