投稿

ラベル(脆弱性)が付いた投稿を表示しています

[PHP] WEBアプリケーションの脆弱性 - XSS(クロスサイトスクリプティング)脆弱性と対策について

イメージ
XSS(クロスサイトスクリプティング)についてと、PHPにおけるXSS対策についてまとめます。 XSS(クロスサイトスクリプティング)とは クロスサイトスクリプティング(以下XSS)とは、Webサイトの脆弱性を突いた悪意のある攻撃のことを言います。 その多くは、スクリプトによってWebページを改ざんしたリンクを用意し、そのリンクを踏んだ第三者の個人情報やID/PASSWORD等の機密情報を抜き取る手口が上げられます。 XSSの概要図 まず攻撃者は、正規のサイトに悪意のあるスクリプトを埋め込みWebページを改ざんします。実際に正規サイトのWebページを書き換えるわけではなく、スクリプトを埋め込んだリンクを用意して、Webページの利用ユーザーがリンクを踏むのを待ちます。 Webページ利用者は、攻撃者が用意したリンクを踏んでしまうと、悪意のあるスクリプトによってWebページが改ざんされた状態でブラウザに表示されます。例えば、ログイン画面のformタグのacsion属性を書き換えられてしまうと、ログイン情報(ID/PASSWORD)が、攻撃者が用意したサーバーにPOSTされてしまう等の被害が考えられます。 上記の通り改ざんされたWebページから攻撃者の用意したサーバーへ機密情報が送信されたり、偽サイトへ誘導されてしまいます。最初に表示されるページが正規サイトのページなだけに、閲覧者は気づきにくく非常に危険です。 なお、この時のデータの流れが、攻撃者→正規サイト、閲覧者→偽サイト、とクロスすることからクロスサイトスクリプティングと名づけられています。 XSS脆弱性のコード もっとも簡単な例でXSS脆弱性を再現してみます。 index.html まずは簡単なFormとSubmitボタンがあるWebページを用意します。 <html> <head> <title>XSS検証</title> </head> <body> <form action="/xss-test/test.php" method="POST"> <input type="tex