XSS クロスサイトスクリプテイング
定義
攻撃者が送り込んだ悪意のコードをそのページを閲覧した不特定多数のユーザーに、スクリプト(簡易的なプログラム)として実行させる可能性があることを指します。
簡単に言えば:攻撃者が悪意のあるスクリプトをWebページに注入し、他のユーザーのブラウザ上でそのスクリプトが実行されるセキュリティの脆弱性です。
攻撃が引き起こす悪い状況
- パスワードや個人情報の盗難
攻撃者は偽のログインフォームを作り、そこに入力された情報を盗み取ることができます。
- Cookieの窃取
攻撃者はユーザーのブラウザからCookieを盗むことができ、これによりユーザーのセッションを乗っ取ることが可能になります。セッション乗っ取りにより、攻撃者はユーザーになりすまして、SNSアカウントの操作やネットバンクでの不正な取引を行うことができます。
- ウェブサイトの改変
攻撃者はウェブページに不正なスクリプトを注入し、ページの内容を変更することができます。これにより、他の訪問者に対して偽の情報を表示したり、追加のマルウェアを配布したりすることが可能になります。
- ブラウザのセキュリティ機能の回避
XSS攻撃により、攻撃者はブラウザのセキュリティ機能を回避し、他の攻撃手法を用いることが容易になります。
クロスサイトスクリプティング攻撃に対する対策
ユーザーの対策
- ブラウザーなどのアプリケーションを常に最新にアップデートすること
- Webサイトやメールに含まれているリンクを安易にクリックしないことです
- ブラウザーのセキュリティ設定を変更することで、信頼できるWebサイト以外ではJavaScriptなどのスクリプト機能を無効にする
- ウイルス対策ソフトウェアを導入し、不正なWebサイトへのアクセスや不正スクリプトの実行を阻止すること
Webアプリケーション管理者の対策
エスケープ処理の実施:
- ユーザーの入力に含まれる特殊文字(例:「<」、「&」)を無害化するためにHTMLエンティティ(例:「<」、「&」)に変換。
- スクリプトが動作することを防ぐために、入力されたデータをそのまま出力しない。
入力値の制限:
- ユーザーが入力できる文字の種類を限定(例:パスワードの場合「半角英数字6文字以上」)。
- 形式が決まっているデータ(例:郵便番号、電話番号)の入力欄で数字のみの入力を許可。
- 不適切な入力があった場合に再入力を求める。
WAF(Web Application Firewall)の導入:
Webアプリケーションへの攻撃を検知し、防御するためのシステム。
ユーザーの入力値をチェックし、不審なアクセスやXSS攻撃をブロック。
定期的なセキュリティチェックとアップデート:
定期的にアプリケーションのセキュリティ状況をレビューし、新たな脆弱性に対処。
セキュリティのベストプラクティスに沿った開発と維持を続ける。
SQLインジェクション
定義
SQLの組み立て方法に問題がある場合、攻撃によってデータベースの不正利用をまねく可能性があります。
このような問題を「SQLインジェクションの脆弱性(ぜいじゃく)と呼び、問題を悪用した攻撃を、「SQLインジェクション攻撃」と呼びます。
Webアプリケーションの脆弱性を意図的に利用し、断片(だんペン)的なSQL文をアプリケーションに不正に注入(インジェクション)し実行させる攻撃手法です。