などについては理解しmysql_real_escape_string
ていますが、メールを送信するだけの場合はどうなりますか?
フォームとテキストボックスがありますが、$_POST
データをユーザーに直接メールで送信するだけで脆弱性はありますか? 私は彼らがPHPを実行することはできないと思います..または、Webアドレスから実行する場合はできますか? 私はわかりません。
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.
問題は、ユーザー入力を信頼しないことです。最大の問題は、 POST変数からメール アドレスまたは BCC を設定する場合です。リクエストに任意の電子メールアドレスを設定できること。
ただし、フォームを介してリンクなどをユーザーに送信することは可能です。このためには、キャプチャを実装する必要があります。ボットが、定義された値を含むフォームを誰にも送信できないこと。
最後の解決策は、フォーム内の非表示のテキスト フィールドです。CSSで隠すことができます。フィールドが空でない場合は、ボットが入力したことがわかります。
しかし、POST 変数をhtmlspecialchars()でエスケープすると良いと思います
したがって、フォームを保護する可能性はたくさんあります。それらの 1 つだけを使用するのではなく、ユーザーを信頼する必要があります。