オフサイトのリモート フォーム送信を防止する PHP メソッド
この記事では、オフサイト リモート フォームの送信を防止する PHP メソッドを主に紹介します。この例では、セッション コードと検証コードを使用した送信フィルタリング方法を示します。プログラマーは、
この記事を参照してください。この記事では、PHP がサイト外へのフォームのリモート送信を防止する方法について説明し、参考のために全員と共有します。具体的な実装方法は次のとおりです。
一般に、Web マスターがフォームを送信できないようにすることは、フォームが開かれるたび、またはデータが送信されるたびに検証用のトークンを追加することに他なりません。これは実際には次のとおりです。検証コードによる方法は次のとおりです。サイト外へのフォームのリモート送信を防ぐ例をいくつか見てみましょう。
例 1: 送信ページを開くたびにトークンを生成し、フォームが送信されると、現在のトークン値がセッションと一致しているかどうかを判断します。それは正常な送信であり、それ以外の場合は無効な送信です。
具体的なコードは次のとおりです。
<?<span style="color: #000000;">php </span><span style="color: #008080;">session_start</span><span style="color: #000000;">(); </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$_POST</span>['submit'] == "go"<span style="color: #000000;">){ </span><span style="color: #008000;">//</span><span style="color: #008000;">check token </span> <span style="color: #0000ff;">if</span> (<span style="color: #800080;">$_POST</span>['token'] == <span style="color: #800080;">$_SESSION</span>['token'<span style="color: #000000;">]){ </span><span style="color: #008000;">//</span><span style="color: #008000;">strip_tags </span> <span style="color: #800080;">$name</span> = <span style="color: #008080;">strip_tags</span>(<span style="color: #800080;">$_POST</span>['name'<span style="color: #000000;">]); </span><span style="color: #800080;">$name</span> = <span style="color: #008080;">substr</span>(<span style="color: #800080;">$name</span>,0,40<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">clean out any potential hexadecimal characters </span> <span style="color: #800080;">$name</span> = cleanHex(<span style="color: #800080;">$name</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">continue processing.... </span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #008000;">//</span><span style="color: #008000;">stop all processing! remote form posting attempt! </span><span style="color: #000000;"> } } </span><span style="color: #800080;">$token</span> = <span style="color: #008080;">md5</span>(<span style="color: #008080;">uniqid</span>(<span style="color: #008080;">rand</span>(), <span style="color: #0000ff;">true</span><span style="color: #000000;">)); </span><span style="color: #800080;">$_SESSION</span>['token']= <span style="color: #800080;">$token</span><span style="color: #000000;">; </span><span style="color: #0000ff;">function</span> cleanHex(<span style="color: #800080;">$input</span><span style="color: #000000;">){ </span><span style="color: #800080;">$clean</span> = <span style="color: #008080;">preg_replace</span>("![\][xX]([A-Fa-f0-9]{1,3})!", "",<span style="color: #800080;">$input</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$clean</span><span style="color: #000000;">; } </span>?> <form action="<?php echo <span style="color: #800080;">$_SERVER</span>['PHP_SELF'];?>" method="post"> <p><label <span style="color: #0000ff;">for</span>="name">Name</label> <input type="text" name="name" id="name" size="20" maxlength="40"/></p> <input type="hidden" name="token" value="<?php echo <span style="color: #800080;">$token</span>;?>"/> <p><input type="submit" name="submit" value="go"/></p> </form>
この確認コードの方法は他の方法と同じです。以下の簡単な例を見てみましょう
例 2: 確認コードを追加します
フォームを送信するときに確認コードを追加すると、水充填機によるデータの送信を効果的に防ぐことができます。ただし、グラフィックスおよび画像認識プログラムがより強力になるにつれて、検証コードの認識はさらに困難になり、一部の小規模サイトでは音声認識も使用されます。
<span style="color: #0000ff;">if</span>(<span style="color: #800080;">$_POST</span>['vcode'] !=<span style="color: #000000;"> get_vcode()){ </span><span style="color: #0000ff;">exit</span>('验证码校验失败,无法入库'<span style="color: #000000;">);}</span>
具体的な例に興味のある読者は、関連する検証の例をオンラインで多数見つけることができます。
元のアドレス: http://www.manongjc.com/article/678.html
関連書籍:
php がクロスドメイン フォームの送信を防止します
クロスドメインリクエストを解決するための js jsonp メソッド
php がフォームを送信するときに、if($_POST[submit]) と if(isset($_POST[sub
php multiple submit] を判断します)送信フォームの処理メソッド
php ajax 更新なしの送信フォーム