A. ジャンゴ-XSS攻撃と防衛
1.クロスサイトスクリプティング(XSS)の概念
XSSは、Webアプリケーションは、多くの場合、Webユーザーに悪質なコードがユーザーによって使用される他のページに提供することを可能にするコンピュータのセキュリティ上の脆弱性に表示されています。また、属インジェクション攻撃、
注入は、基本的にデータは、これらのコードとして実行可能なプログラム文に入力されたHTMLコードとクライアント側のスクリプトが含まれています。
2. XSS攻撃:----->ウェブ注入
XSS XSS(クロスサイトスクリプト、XSSと呼ばれる)時間のほとんどは、いわゆる、ドメイン間での攻撃をスクリプトされているので、「HTMLインジェクション」の一種である「クロスドメインスクリプティング。」 私たちはしばしば聞くそして最後に「注入」は、そのようなSQLインジェクションとして、(インジェクション)「注入された」とは何ですか?注入は、自然の中でのプログラム実行文への入力データにあります。SQLインジェクションは、そうである
XSSも真であるが、XSSは、通常、スクリプトコードは、Cookie情報として有効なユーザデータを得るために使用することができる悪意のあるスクリプトコードを注入します。 PS:ユーザーが入力したデータは、セキュリティの形で表示され、それだけでページ上の文字列を表示することができます。 安全性データをマークすると、Djangoフレームワークを表示します(ただし、この操作は安全ではありません!): -データはテンプレートページ上で取得しても安全に書き込まれた後----> {。{XXXX | 安全}} -バックグラウンドでインポートモジュール:から django.utils.safestring 輸入mark_safe 文字列がページに渡されるセキュリティ処理を行う ----> S = mark_safe(S)
XSS攻撃の実装は二つの条件が必要です。
まず、ページがウェブに悪質なコードを挿入する必要がある。
第二に、これらの悪質なコードが正常にブラウザを実行することができます。
解決策: 1の前に、1つのアプローチは、フォームまたはURLパラメータの引き渡し、フィルタリングするために必要なパラメータを提出することです。 2、バックグラウンドでデータベースから取得した文字列データをフィルタリングし、それは、決定されたキーワードです。 3、セキュリティ・メカニズムを設定します。 Djangoフレームワーク:デフォルトでブロックされた内部機構。これは、入ってくる文字列が安全ではない、それは文字列をレンダリングし、表示されませんことを決定しました。安い手が安全で書かれている場合、それは、危険である
あなたが安全に使用したい場合は、それがバックグラウンドで文字列フィルタをレンダリングするために行う必要があります。開発されたときに、それは、セキュリティ・メカニズムに注意して使用する必要があります。・特に、ユーザーが提出することができますし、コンテンツをレンダリングすることができます!!!
comment.html:评论提交页面 <!DOCTYPE HTML> <HTML LANG ="EN"> <HEAD> <メタ文字コード="UTF-8"> <タイトル> </ TITLE> </ HEAD> <BODY> <フォームメソッド="POST"ACTION ="/コメント/"> <H4>评论</ H4> の<input type ="テキスト"名前="コンテンツ"/> の<input type ="提出"=値"提出"/>{{エラー}} </ FORM> </ BODY> </ HTML>
index.htmlを评论显示页面: <!DOCTYPE HTML> <HTML LANG ="EN"> <HEAD> <メタ文字コード="UTF-8"> <タイトル> </ TITLE> </ HEAD> <BODY> <H1>评论内容</ H1> {%ための項目でのMSG%} の<div> {{項目|安全}} </ div> {%ENDFOR%} </ BODY> </ HTML>
views.py后台处理 からdjango.shortcutsはインポートレンダリング MSG=[] DEF(要求を)コメント: 場合request.methodは=="GET": リターン(要求、レンダリング'comment.htmlを') それ以外: V= request.POST。 (取得「コンテンツ」) であれば 「スクリプト」 にします。v 戻り値は、要求、(レンダリング「comment.html」{、"エラー':' 小比崽子还黑我' }) 他: msg.append(V) を返す(リクエスト、レンダリング' comment.html ' )
DEF :インデックス(要求) 復帰要求、(レンダリング' index.htmlを'、{ ' MSG ' :MSG})
デフ試験(リクエスト) から django.utils.safestring インポートmark_safeの TEMP = " <a href='http://www.baidu.com'>百度</a>の" newtempを =mark_safe(TEMP) リターンレンダリング(リクエスト、' test.htmlという' { ' TEMP ':newtempを}