SQL インジェクション、XSS、CSRF とは何ですか?この記事では SQL インジェクション、XSS、CSRF について紹介します。参考になる内容です。困っている方は参考にしてください。お役に立てれば幸いです。
SQL インジェクション
SQL インジェクションはインジェクション攻撃であり、この種の攻撃は、コードとデータ (ユーザーの機密データなど) がデータの読み取り時にコードの一部としてデータが誤って実行されることによって発生する分離。
典型的な例は、エスケープされていないユーザー入力を変数として直接使用して、SQL ステートメント内の文字列を連結する場合です。このとき、drop や delete などのキーワードを追加するなど、SQL ステートメントの途中で変更を加えると、実行後の結果は悲惨なものになります。
そういえば、この状況はどう対処すればいいのでしょうか? 3 つの側面:
1. ユーザー入力パラメーター内の特殊文字をフィルターして、リスクを軽減します。
2. 文字列を介して SQL ステートメントを結合することは禁止されており、パラメーターを渡すにはパラメーター バインディングを厳密に使用する必要があります。
3. データベース フレームワークによって提供されるメカニズムを合理的に使用します。たとえば、Mybatis が提供するパラメータを渡す方法は #{} ですが、${} の使用は禁止されています。後者は文字列結合 SQL に相当し、パラメータ化されたステートメントを使用する必要があります。
要約すると、パラメーター化されたバインディング SQL 変数を正しく使用する必要があります。
XSS
一般ユーザーが要求したHTMLページに、技術的な手段を用いて悪意のあるスクリプトを挿入し、実行することを指します。
この種の攻撃は、主に情報の盗難と破壊に使用されます。例えば、2011 年の Weibo XSS 攻撃では、攻撃者は Weibo の公開機能でアクションデータの脆弱性が効果的にフィルタリングされていないことを利用し、Weibo の情報を公開する際に攻撃スクリプトを含む URL を持ち込んでユーザーを攻撃しました。悪意のあるスクリプトが読み込まれ、多数のユーザーが攻撃を受けます。
XSS の防止については、ユーザーが入力したデータをフィルタリングまたはエスケープすることが主な方法であり、フレームワークが提供するツール クラス HtmlUtil を使用できます。さらに、フロントエンドがブラウザーにデータを表示する場合、安全な API を使用してデータを表示する必要があります。たとえば、innerHTML の代わりに innerText を使用します。
CSRF
クロスサイト リクエスト フォージェリは、ユーザーの知らないうちにユーザーになりすまして、現在ログインしているユーザーにリクエストを送信します。 Web ページ: 悪意のある投稿、パスワードの変更など、Web サイト上で悪意のある操作を実行します。
一般的には XSS と重複しますが、前者はハッカーがユーザーのブラウザのログイン情報を盗み、ユーザーになりすまして操作を行うものです。後者は、通常のユーザーが要求した HTML に悪意のあるコードを埋め込むもので、XSS 問題はユーザー データがエスケープおよびフィルタリングされていないことにあり、CSRF 問題は信頼できない呼び出しを防止できない HTTP インターフェイスで発生します。
CSRF 脆弱性を防ぐ方法:
1. CSRF トークンの検証。ブラウザの同一生成元制限を使用して、HTTP インターフェイスが認証される前に Cookie 内のトークンを検証します。リクエストは渡された場合にのみ実行され続けます。
2. SMS 検証コードやインターフェイス スライダーなどの人間とコンピューターの対話。
おすすめのビデオ チュートリアル: 「MySQL チュートリアル 」
以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !
以上がSQL インジェクション、XSS、CSRF とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。