1 of 41

総合実習��Webに関するセキュリティ

2024年1月18日(木)

鳥取湖陵高校

情報科学科情報システムコース3年

2 of 41

講師の紹介

  • 守山 凜 (もりやま りん)
    • 専攻科生産システム工学専攻1年(大学3年相当)

    • 鳥取県警察サイバー防犯ボランティア
    • デジタル庁・デジタル推進委員

    • Webサイトで研究内容・実績等を公開

Webに関するセキュリティ

1

2024年1月18日(木)

3 of 41

本日の内容

  • 情報セキュリティの基本
    • 情報のCIA
  • Webセキュリティ
    • Webに関する脅威
    • SQLインジェクション
    • クロスサイトスクリプティング

Webに関するセキュリティ

2

2024年1月18日(木)

4 of 41

1. 情報セキュリティの基本

Webに関するセキュリティ

3

2024年1月18日(木)

5 of 41

情報セキュリティとは?

  • 総合実習の振り返り
    • 仮想のショッピングサイトを制作した
      • UI(画面)
      • データベース
    • 実際の開発では「セキュリティ」を意識する必要がある

  • セキュリティとは?
    • 安全を守る対策全般を指す
    • 情報セキュリティ=「情報」に対するセキュリティ
      • 「情報」=コンピュータ,ソフトウェア,顧客情報,技術情報 など

Webに関するセキュリティ

4

2024年1月18日(木)

6 of 41

情報セキュリティの定義(情報のCIA)

  • 日本産業規格Japanese Industrial Standards)
    • 情報の機密性完全性可用性を維持すること(JIS Q 27000)

    • 電子署名:なりすまし,改ざんを防ぐための電子的な署名
    • 冗長化:障害に備えて,予備の設備やシステムを運⽤しておく

Webに関するセキュリティ

5

2024年1月18日(木)

用語の意味

対策

機密性

許可された人だけ,情報を使うことができる

暗号化

完全性

情報が正確で完全である

電子署名

可用性

使いたいときに,情報を使うことができる

システムの冗長化

7 of 41

情報セキュリティに関する用語

  • 脅威
    • システムに損害を与える可能性のあるインシデントの原因
      • 不正アクセス
      • コンピュータウイルス
      • 人間のミス など

  • 脆弱性
    • 1つ以上の脅威がつけ込むことのできる弱点
      • システムに潜む欠陥(セキュリティホール) など

Webに関するセキュリティ

6

2024年1月18日(木)

8 of 41

2. Webセキュリティ

Webに関するセキュリティ

7

2024年1月18日(木)

9 of 41

Webシステム

  • Webシステムとは?
    • インターネットに接続しWebブラウザを通して閲覧・利用できるシステムやサービス
      • SNS
      • ECサイト
      • ネットバンキング

Webに関するセキュリティ

8

2024年1月18日(木)

10 of 41

Webシステムの構成

  • プログラム
    • UI(画面)や,処理の手続きは,プログラムで記述される
    • Webに関する言語
      • HTML
      • CSS
      • JavaScript
      • PHP
      • Ruby など

Webに関するセキュリティ

9

2024年1月18日(木)

https://skillhub.jp/blogs/259

11 of 41

Webシステムの構成

  • データベース
    • 検索や蓄積が容易にできるように整理された情報の集まり
      • 住所録
      • 電子カルテ
      • 商品リスト
      • ユーザリスト
    • SQLで操作

Webに関するセキュリティ

10

2024年1月18日(木)

https://codezine.jp/article/detail/12216

12 of 41

Webに関するセキュリティ上の脅威

  • Webシステムにはどんな脅威があるか考えてみよう!
  • 例えば…
    • システムへの不正侵入
    • プログラムの改ざん
    • データベースの破壊
    • データベース内の情報窃取
    • フィッシングサイトへの誘導

    • 具体的な脅威(サイバー攻撃手法)について考える
      • 演習も取り入れながら勉強します!

Webに関するセキュリティ

11

2024年1月18日(木)

13 of 41

はじめる前に…

  • 演習用のWebサイトにログインする
    • 『演習用サイト アカウント交付書』を参照

    • 1つ目のQRコードを読み取り,ログイン画面にアクセス
    • カメラの利用を許可する
    • 2つ目のQRコードを読み取り,ログインする

    • ログインできたら待機

Webに関するセキュリティ

12

2024年1月18日(木)

14 of 41

SQLインジェクション

  • SQLインジェクションとは?
    • データベースに送信するデータの中に,SQL文を混入して不正にデータベースを操作する

  • ユーザの認証
    • IDとPWを入力する
    • IDとPWを代入したSQL文を実行

Webに関するセキュリティ

13

2024年1月18日(木)

15 of 41

SQLインジェクション

  • SQLの挿入例

Webに関するセキュリティ

14

2024年1月18日(木)

ログインしたい

IDとパスワード

を入力

IDとパスワード

を代入したSQL文を送信

16 of 41

SQLインジェクション

  • 悪意あるユーザの場合

Webに関するセキュリティ

15

2024年1月18日(木)

データを破壊してやる!

削除コマンドを含む文字列を送信

削除コマンドが混入されたSQL文を生成し,実行を指示

IDとパスワードが�正しいか確かめよう!

実行

17 of 41

SQLインジェクションの体験

  • 演習用サイトの仕組み
    • ユーザIDとパスワードを入力すると,対応するメールアドレスが表示される

  • まずは,SQLインジェクション攻撃① をつかう

Webに関するセキュリティ

16

2024年1月18日(木)

ユーザID

パスワード

メールアドレス

cat10

cat10

cat@test.com

dog20

dog20

dog@test.com

star30

star30

star@test.com

lion40

lion40

lion@test.com

18 of 41

SQLインジェクションの体験

  • 正しいユーザIDとパスワードを入力する

Webに関するセキュリティ

17

2024年1月18日(木)

19 of 41

SQLインジェクションの体験

  • 間違ったパスワードを入力する

Webに関するセキュリティ

18

2024年1月18日(木)

20 of 41

SQLインジェクションの体験

  • 攻撃を仕掛ける
    • IDは空欄,パスワードに ‘OR ‘A’=‘A と入力

Webに関するセキュリティ

19

2024年1月18日(木)

全員分のアドレスが漏洩!

➡ 攻撃成功!

21 of 41

一度元のページに戻る

Webに関するセキュリティ

20

2024年1月18日(木)

「閉じる」をクリック

22 of 41

SQLインジェクションの対策

  • エスケープ処理
    • SQLで特別な意味をもつ記号を別の文字列に置換する処理
    • 例えば,「’」→「’’」,「\」→「\\」

    • 実装は簡単…ライブラリを使う
      • 今回は,空白を「+」に置換している

    • SQLインジェクション攻撃② を使って対策を体験!

Webに関するセキュリティ

21

2024年1月18日(木)

23 of 41

エスケープ処理の検証

  • 攻撃を仕掛ける
    • IDは空欄,パスワードに ‘OR ‘A’=‘A と入力

    • 正しく対策できていることが分かる

Webに関するセキュリティ

22

2024年1月18日(木)

攻撃失敗!

24 of 41

クロスサイトスクリプティング (XSS)

  • XSSとは
    • 悪意のあるスクリプトを標的となるWebサイトに埋め込む攻撃
    • Webページを閲覧している利用者が影響を受ける

Webに関するセキュリティ

23

2024年1月18日(木)

25 of 41

XSSの体験(1)

  • Webページの背景色を,黄色から赤色に変更する
    • Part.1 のページ を使う

Webに関するセキュリティ

24

2024年1月18日(木)

26 of 41

XSSの体験(1)

  • どうやったら実現できるか?
    • CSSを上書きすればいい
    • しかし,CSSを直接は上書きできない

  • HTMLを使って間接的にCSSを上書きする
    • styleタグを使う

Webに関するセキュリティ

25

2024年1月18日(木)

27 of 41

XSSの体験(1)

  • テキストボックスに以下のHTML文を入力し送信
    • <style>body{background:red;}</style>

Webに関するセキュリティ

26

2024年1月18日(木)

背景色の指定

28 of 41

XSSの体験(2)

  • 実現したいこと
    • 利用者を偽サイトに誘導する
    • Part.2 のページを使う

  • どうしたら実現できるか
    • 文字列を表示し,ハイパーリンクを埋め込む

Webに関するセキュリティ

27

2024年1月18日(木)

29 of 41

XSSの体験(2)

  • 実装例
    • 表示されているハイパーリンクをタップすると…
      • 怪しいサイトに飛んだ!!
      • 授業用のオリジナルサイトで,危険性はありません.

Webに関するセキュリティ

28

2024年1月18日(木)

タップ

30 of 41

XSSの体験(2)

  • テキストボックスに以下のHTML文を入力し送信
    • <a href=\“http://timer.wim-cc.com/\”>�湖陵高校のHPはこちら</a>

    • エスケープ処理が実装されているので,回避する
      • 「“」→「\”」

  • 表示されたハイパーリンクをクリックすると…
    • 怪しいサイトに飛んでしまった!!

Webに関するセキュリティ

29

2024年1月18日(木)

改行しない

指定サイトのURL

31 of 41

XSSの対策

  • 基本的な対策は,SQLインジェクションと同じ
    • エスケープ処理を実装する

  • HTMLタグの利用を禁止するのも有効
    • 偽サイトへの誘導に使ったページの場合
      • imgタグ(画像の貼り付け)
      • iframeタグ(Webページの埋め込み)

Webに関するセキュリティ

30

2024年1月18日(木)

32 of 41

おわりに

Webに関するセキュリティ

31

2024年1月18日(木)

33 of 41

今日はいかがでしたか?

  • 自宅でも挑戦したい!
    • 1月中は公開するので,自宅でも挑戦可能!
    • 他の攻撃もできるので,試してみてください
    • ただし,実際のシステムには攻撃しない ➡犯罪です

  • システム開発で気を付けること
    • セキュリティ対策を忘れずに
    • 企業のセキュリティ方針(情報セキュリティポリシー)を守る
    • セキュリティ対策はコスト面も気にしながら

Webに関するセキュリティ

32

2024年1月18日(木)

34 of 41

アンケート

  • アンケートにご協力ください
    • 授業内容や教材についての意見を問うもの
    • 個人情報は一切収集しません
    • QRコード または 演習サイト から回答できます!

Webに関するセキュリティ

33

2024年1月18日(木)

ここをタップ

35 of 41

【おまけ】

ここから先は,興味のある方は取り組んでみてください.

Webに関するセキュリティ

34

2024年1月18日(木)

36 of 41

XSS:偽サイトに誘導する

  • XSSの演習ページ(Part.1/2) の問題点
    • HTMLタグが一部使えるようになっていた!
      • Part.1:styleタグ
      • Part.2:aタグ

  • 対策は十分か?
    • Part.3のページを使って実験
      • Part.1や2で行った攻撃に対する対策が行われている

Webに関するセキュリティ

35

2024年1月18日(木)

37 of 41

実験1

  • 背景色の変更,偽サイトへの誘導を試す
    • 授業で使ったHTML文を,Part.3のページで送信する

    • 正しく実行されない

Webに関するセキュリティ

36

2024年1月18日(木)

38 of 41

別の方法を試す

  • 他に実装できる手段はあるか?
    • JavaScriptを使っても実現できるが,scriptタグを禁止している

    • 「イベントハンドラ」を使って実装

  • 「イベントハンドラ」とは?
    • 特定の出来事(イベント)が発生した時に実行する処理
    • クリックしたときに特定のページにジャンプする など

Webに関するセキュリティ

37

2024年1月18日(木)

39 of 41

実験2

  • イベントハンドラを使って実装
    • 誘導先:https://fake.wim-cc.com/

  • 以下のHTML文を送信する
    • <b onclick=\“window.open(\‘https://fake.wim-cc.com/\’,\‘_blank\’);\”>こちらをタップ</b>

Webに関するセキュリティ

38

2024年1月18日(木)

改行しない

イベントハンドラ

40 of 41

実験2

  • 表示された文字列をタップすると…
    • 「Yahoo!」のログイン画面に飛んだ!?
      • オリジナルの偽サイト

Webに関するセキュリティ

39

2024年1月18日(木)

タップ

左上のロゴも�よく見るとおかしい

41 of 41

完璧(?)な対策とは

  • Part.0を見てみると
    • 実行できないようになっている

  • 高い安全性を確保するには?
    • 複数の対策を実装する
    • ただし,100%の安全は存在しない

Webに関するセキュリティ

40

2024年1月18日(木)