XSSとCSRF
7472 ワード
[XSS]
XSSとは?
XSS(Cross-site Scripting)は、SQL注入とともにWeb上で最も基本的な脆弱性攻撃方法であり、悪意のあるユーザーが攻撃しようとするサイトにスクリプトを加える技術を指す.
主に、サイト間スクリプトと呼ばれる他のWebサイトと情報を交換する方法で動作します.
OWASPは、「サイト間スクリプト(XSS)は、アプリケーションがブラウザに送信したページ上で発生し、ユーザが入力したデータを検証しない場合、または出力時に危険なデータを無効にしない場合」を示す.
Webアプリケーションがユーザーが入力した値を正しくチェックしていない場合、このような状況が発生します.攻撃に成功すると、ログインサイトのユーザーは挿入されたコードを実行し、Cookieやセッションタグなどの機密情報を取得します.
攻撃方法によってStored XSSとReflected XSSに分けられる.Stored XSSは、サイト掲示板やコメント、ニックネームなどのスクリプトをサーバに格納して実行する方式であり、Reflected XSSは通常、サーバにスクリプトを直接格納するのではなく、URLパラメータ(特にGET方式)にスクリプトを追加する.
XSS攻撃スクリプトラベルを使用してJavaScript を実行リンクラベルを使用してJavaScript を実行イベント属性でJavaScript を実行ランダムタグのイベント属性でJavaScript(イベント属性リスト) を実行の一部ブラウザではjavascript:リンク間にスペース文字を含めることができ、HTML符号化で復号内容を出力することができ、HTMLコードラベルを挿入することでjavascript を実行する. document.クッキーなどの単語をブロックする場合は、JavaScript乱読(exaaencode)のタグを挿入してスクリプト を実行します.入力値の検証
データを入力する前に、または入力したデータをサーバに転送する前にフロントで検証することが望ましい. 入力データの長さは に制限.入力文字またはフォーマットが であることを確認する.指定ルール以外の入力値 をキャンセルする.
出力値の検証
解釈の余地のある特殊文字を符号化して表示する必要があります.
セキュリティ・ライブラリの使用
OWASPAntisamyやNAVERLucy XSS Filterなどの信頼性の高いライブラリを使用します.
httponlyプロパティの適用
HttpOnlyはJavaScriptのドキュメントです.クッキーを使用してクッキーに接続するオプションを防止します.
[CSRF]
CSRFとは?
CSRF(Cross-Site Request Forgery)は、サイトユーザー(犠牲者)が自分の意思を顧みず、攻撃者の意図した行為(修正、削除、登録など)を特定サイトへの攻撃を要求し、ハッカー(攻撃者)がCSRFを通じてユーザーの権限を盗用し、思わぬ機能を実行させるものである.
XSSを使用した攻撃がユーザに対してウェブサイトを信頼する場合、サイト間の要求偽造は、あるウェブサイトに対してユーザを信頼するブラウザの状態である.
CSRF攻撃
ユーザがウェブサイトにログインすると、サイト間に挿入された攻撃コードの偽造を要求するページが開き、攻撃されたウェブサイトは、偽造された攻撃コマンドが信頼できるユーザから発行されたと判断し、攻撃にさらされる.
CSRF防御
Refer検査
HTTPヘッダのRefer情報を確認して、要求が信頼できるページから来たかどうかを確認します.
ただしrefer情報は操作可能です
Security Tokenの使用
ログインしたプレイヤーにトークンをリリースし、リクエストを送信するとともに確認を送信します.
CAPTCHA
特定の要求を処理するときは、CAPTCHA単語が要求とともに送信されていることを確認し、要求が必要なページで送信されていることを確認します.
XSSの脆弱性がある場合、CSRF攻撃に脆弱性が生じる可能性があります. ソース
https://medium.com/humanscape-tech/xss%EC%99%80-csrf-fe0e219b4c38
https://gogomalibu.tistory.com/163
https://lucete1230-cyberpolice.tistory.com/23
XSSとは?
XSS(Cross-site Scripting)は、SQL注入とともにWeb上で最も基本的な脆弱性攻撃方法であり、悪意のあるユーザーが攻撃しようとするサイトにスクリプトを加える技術を指す.
主に、サイト間スクリプトと呼ばれる他のWebサイトと情報を交換する方法で動作します.
OWASPは、「サイト間スクリプト(XSS)は、アプリケーションがブラウザに送信したページ上で発生し、ユーザが入力したデータを検証しない場合、または出力時に危険なデータを無効にしない場合」を示す.
Webアプリケーションがユーザーが入力した値を正しくチェックしていない場合、このような状況が発生します.攻撃に成功すると、ログインサイトのユーザーは挿入されたコードを実行し、Cookieやセッションタグなどの機密情報を取得します.
攻撃方法によってStored XSSとReflected XSSに分けられる.Stored XSSは、サイト掲示板やコメント、ニックネームなどのスクリプトをサーバに格納して実行する方式であり、Reflected XSSは通常、サーバにスクリプトを直接格納するのではなく、URLパラメータ(特にGET方式)にスクリプトを追加する.
XSS攻撃
<script>alert('hello world');</script>
<a href="javascript:alert('hello world')">링크</a>
<img src='#' onerror="alert('hello world')"/>
<human oncopy="alert('hello world')">휴먼</human>
<a href="javascript:alert('hello world')">링크</a>
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
XSS防御データを入力する前に、または入力したデータをサーバに転送する前にフロントで検証することが望ましい.
出力値の検証
解釈の余地のある特殊文字を符号化して表示する必要があります.
セキュリティ・ライブラリの使用
OWASPAntisamyやNAVERLucy XSS Filterなどの信頼性の高いライブラリを使用します.
httponlyプロパティの適用
HttpOnlyはJavaScriptのドキュメントです.クッキーを使用してクッキーに接続するオプションを防止します.
CSRFとは?
CSRF(Cross-Site Request Forgery)は、サイトユーザー(犠牲者)が自分の意思を顧みず、攻撃者の意図した行為(修正、削除、登録など)を特定サイトへの攻撃を要求し、ハッカー(攻撃者)がCSRFを通じてユーザーの権限を盗用し、思わぬ機能を実行させるものである.
XSSを使用した攻撃がユーザに対してウェブサイトを信頼する場合、サイト間の要求偽造は、あるウェブサイトに対してユーザを信頼するブラウザの状態である.
CSRF攻撃
ユーザがウェブサイトにログインすると、サイト間に挿入された攻撃コードの偽造を要求するページが開き、攻撃されたウェブサイトは、偽造された攻撃コマンドが信頼できるユーザから発行されたと判断し、攻撃にさらされる.
CSRF防御
Refer検査
HTTPヘッダのRefer情報を確認して、要求が信頼できるページから来たかどうかを確認します.
ただしrefer情報は操作可能です
Security Tokenの使用
ログインしたプレイヤーにトークンをリリースし、リクエストを送信するとともに確認を送信します.
CAPTCHA
特定の要求を処理するときは、CAPTCHA単語が要求とともに送信されていることを確認し、要求が必要なページで送信されていることを確認します.
https://medium.com/humanscape-tech/xss%EC%99%80-csrf-fe0e219b4c38
https://gogomalibu.tistory.com/163
https://lucete1230-cyberpolice.tistory.com/23
Reference
この問題について(XSSとCSRF), 我々は、より多くの情報をここで見つけました https://velog.io/@ziyoonee/XSS와-CSRFテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol