• 検索結果がありません。

SQL

A. PNG  B. Jpeg

C. GIF  D. BMP

問題12

95

Web関連技術

Base64 

DataURI

• JavaScript 

• 画像ファイルフォーマット 

DataURI 

• セキュリティ

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

• バイナリデータを表示可能なテキストデータに変換

する方法。 

ASCIIテキスト(半角英数字+記号)しか扱えないシス テム(メールなど)がまだ沢山残っているため必要。 

メールに日本語や画像を含めるためには、ASCIIの 印字可能文字の範囲にデータを変換する必要がある 

変換には変換表を使用する。

Base64(1)

97

Base64(2)

Base64 変換表

0 A 16 Q 32 g 48 w

1 B 17 R 33 h 49 x

2 C 18 S 34 i 50 y

3 D 19 T 35 j 51 z

4 E 20 U 36 k 52 0

5 F 21 V 37 l 53 1

6 G 22 W 38 m 54 2

7 H 23 X 39 n 55 3

8 I 24 Y 40 o 56 4

9 J 25 Z 41 p 57 5

10 K 26 a 42 q 58 6

11 L 27 b 43 r 59 7

12 M 28 c 44 s 60 8

13 N 29 d 45 t 61 9

14 O 30 e 46 u 62 +

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

GIFファイルの場合、先頭に”GIF87a”という文字列が埋め込 まれています。そのうちの”GIF”をBase64で変換してみましょ う。 

“GIF”を2進数で表現 (ASCIIコード)


01000111 , 01001001 , 01000110

6bitずつに分割 (括弧内は10進表記)


010001(17),110100(52),100101(37),000110(6 )

変換表で変換


R0lG

Base64 変換例

99

後述のData URIの章で  確認してみましょう

HTML/CSSが読み込む外部ファイルの代わりに、

データ(画像、スタイルシート、JavaScriptなど)を HTMLに埋め込むことが出来る機能。 

HTMLに埋め込むことで全体のファイル数を減らし、

サーバとの通信回数を少なくすることができる。

Data URI

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

data:[<MIME-type>]

[;charset=<encoding>][;base64],<data>

Data URIの書式

101

<img src="data:image/

gif;base64,R0lGODdhEAAQAPAAAP////8AACH/

C1hNUCBEYXRhWE1QCD94cGFja2V0ACwAAAAAEAA QAAACHoQfGceo38CbilHq7jQa9w

+GYieNZZiRqRaxEbcxBQA7" >

使用例 画像を表示する→

Base64についての説明で間違っているものを選択し てください。 

A. 画像にしか使用できない 

B. 64文字でデータを表現する 

C. 元データに比べると、データ量は4/3倍になる  D. メール送信にも使用される

問題13

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

Web関連技術

103

• JavaScript 

• 画像ファイルフォーマット 

• DataURI 

セキュリティ

ディレクトリ・トラバーサル

• SQL

インジェクション

クロスサイト・スクリプティング

• CSRF

• HTTP

ヘッダインジェクション

ディレクトリ・トラバーサル

Webサーバ Webクライアント

http://省略/form.php?tmp=form1.html

header

eyecatch

footer

入力フォーム

form.php

form1.html

指定されたファイルを 

埋め込み

send

A:

B:

C:

send A:

B:

yes no

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

ディレクトリ・トラバーサル

105

Webサーバ Webクライアント

http://省略/form.php?tmp=/etc/passwd

header

eyecatch

footer

入力フォーム

form.php

/etc/passwd

root:x:0:0:root:/root:/bin/ 

bin:x:1:1:bin:/bin:/sbin/no  daemon:x:2:2:daemon:/sb

非公開ファイル の内容が表示さ れ、より悪質な 攻撃に繋ってし まう。

サーバのユーザ一覧  ファイル

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

Webサーバ Webクライアント

http://省略/search.php?key=りんご

header

eyecatch

footer 検索:りんご

指定されたキーワードを  表示

りんごについて 製品概要:りんご

Q&A:りんご

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

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

107

Webサーバ Webクライアント

http://省略/search.php?key=<form…

header eyecatch

footer

search.php

指定された<form>タグを  そのまま表示してしまう

と、ニセの問い合わせ

フォームを表示してしまう  (スタイルを操作し、元の

内容を隠すこともできる)

send

A:

B:

C:

ニセの問い合わせフォー ムのタグを指定する。 

入力データの送信先を、

攻撃者のサイトにしてお けば、情報は盗み放題。

SQLインジェクション

Webサーバ Webクライアント

http://省略/search.php?key=りんご

search.php データベース

SELECT * FROM posts 

WHERE text LIKE ʻ%りんご%ʼ;

SQLを使用して、データベースか ら入力されたキーワードを検索

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

SQLインジェクション

109

Webサーバ Webクライアント

http://省略/search.php?key=';DELETE… 

search.php データベース

SELECT * FROM posts  WHERE text LIKE ʻ%ʼ 

;DELETE FROM posts; 

SELECT * FROM posts ʻ%%ʼ;

ʻ; で一度命令を閉じて、別の命 令を埋め込んでしまう。

HTTPヘッダインジェクション

Webサーバ Webクライアント

HTTP/1.1 302 Found 

Location: http://本来のリダイレクト 先<改行> 

Location: http://攻撃用サイト

<!DOCTYPE html> 

<html> 

<head> 

  <meta charset="utf-8"> 

  <title>サンプル</title> 

  <link rel="stylesheet" href="style.css"> 

</head> 

<body> 

</body> 

攻撃者 攻撃用リンク 

http://省略/redirect.php?url=本来の リダイレクト先<改行>Location: htt...

HTTP  HTTP  Header

HTTPヘッダのLocation で転送先を指定。 

複数ある場合は後の行 が有効になる。

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

エスケープ処理による対処

111

ユーザが入力したデータに含まれる記号などを置き替えること で安全なデータに変更する 

HTMLに埋め込む場合、< > ” ʼ & といった記号があると入力さ れたデータがHTM Lのタグや属性として処理されてしまうため、

記号を変換する。(PHPならhtmlentitiesなどを使用する)

変換前 変換後

< &lt;

> &gt;

ʻ &#039;

“ &quot;

& &amp;

<form> → &lt;form&gt;

Webブラウザの表示上 は<form>と表示される

クロスサイトスクリプティングの場合 SQLインジェ

クション、HTTP ヘッダインジェ クションでは対 処すべき記号が 異なる

CSRF (Cross site request forgeries)

ログイン ログアウトせずに  攻撃者

他のサイトを閲覧

攻撃用ページ

ログイン情報と共に意図しないデータを送信し て、重要な操作を行なってしまう

表示を隠された<form>など。 

<form>のaction属性を正規のURLにしておく

The HTML5 Logo is licensed under Creative Commons Attribution 3.0. Unported by the W3C; http://creativecommons.org/licenses/by/3.0/

ユーザの入力をそのままHTMLに書き出してしまうこ とで発生する脆弱性の名称を選択してください。 

関連したドキュメント