XSS とは: 平たく言えば、SQL インジェクションと同様に、XSS 攻撃も HTML および JS のインジェクションとみなすことができます。あなたは当初、ユーザーから有用なテキストを取得したいと考えていましたが、ユーザーが送信したものは、不純な動機を持つ実行可能な JavaScript またはその他のスクリプトでした (ここでは、スタイルやドキュメント テキストの破壊は攻撃とみなされません)。送信されたコンテンツがページに表示されると、XSS 攻撃が発生します。
XSS に関する攻撃手法やシナリオは無限に存在します。この記事は、セキュリティ保護に関する基本的な知識を広めることを目的としています (フラッシュ スクリプト攻撃は含まれません)。この攻撃手法を徹底的に学習したい場合は、次のリンクを参照してください。お勧めの本です。<
この記事では、Cookie、セッションの動作原理、TP フレームワークについての一定の理解といった基本的な知識が必要です。
1: 攻撃手法の 99% に耐性があり、シナリオの 90% に適用可能です。
Web サイトに複雑なユーザー操作が含まれていない場合、ユーザーが送信したすべての情報は、テキストは htmlspecialchars 関数によって処理されます。
THINKPHP3.2 バージョンの手順は次のとおりです。
1:プロジェクト構成ファイルに構成 を追加します。 'DEFAULT_FILTER' => ; 'htmlspecialchars', //デフォルトのフィルター関数
2:フレームの I メソッドを使用して、ユーザーによって送信されたデータを取得します;
例: M('Member ' )->save(array('content'=>I('post.content')));この方法で追加されたコンテンツは、htmlspecialchars によって処理されました。 質問: なぜ処理されるのですかby htmlspecialchars テキストの安全性は保証できますか?回答: さまざまな XSS 攻撃方法を見ると、そのほとんどは、コンテンツを挿入するために 1 つ以上の文字 <>'"& に依存しています。htmlspecialchars 関数の機能は、これらの文字を無害な HTML エンティティに変換することです。 ;
質問: なぜこれほど良い方法があるのに、非常に多くの Web サイトが依然として攻撃されているのですか。
答え: 多くのプログラマがこの方法を不用意に使用することを常に忘れているためです。また、フィルタリングを省略しているためです。
2: IP を COOKIE にバインドする
Cookie の内容がすべて暗号化されています。XSS 攻撃を通じて Cookie 情報が他人に取得されると、自分のアカウントのパスワードを他人に渡しているのと同じになります。
Cookie の IP をバインドします (もちろん、ユーザーの顧客情報も取得できます)。同時に末端の他の情報もバインド可能) ユーザーの IP に基づいて、この Cookie が本来の許可されたユーザーからのものであるかどうかを判断できます。
# ユーザーが自動ログインを設定すると、自動ログイン情報が保存されます:$auto=I('post.auto');//用户设置了自动登录 if(!empty($auto)){ cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周 }
4: 注目に値する HTML5 の新機能:
5: リッチ テキスト フィルタリング
ThinkPHP 関連の技術記事の詳細については、次のサイトをご覧ください。 ThinkPHP チュートリアル 学ぶべきコラム!
以上がthinkphp フィルター xssの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。