Soumettre la recherche
Mettre en ligne
文字コードとセキュリティ
•
0 j'aime
•
1,718 vues
Kenta Yamamoto
Suivre
徳丸本輪読会
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 46
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
プログラミング作法
プログラミング作法
Kota Uchida
[Basic 4] 整列アルゴリズム / 木 / 探索アルゴリズム
[Basic 4] 整列アルゴリズム / 木 / 探索アルゴリズム
Yuto Takei
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
kozossakai
新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!
Shun Kittaka
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Kenichiro MATOHARA
文字コード略歴
文字コード略歴
Masafumi Yokoyama
文字コード勉強会
文字コード勉強会
典彦 平原
マイコンでマルチタスク
マイコンでマルチタスク
Katsuhiko Terawaki
Recommandé
プログラミング作法
プログラミング作法
Kota Uchida
[Basic 4] 整列アルゴリズム / 木 / 探索アルゴリズム
[Basic 4] 整列アルゴリズム / 木 / 探索アルゴリズム
Yuto Takei
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
kozossakai
新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!
Shun Kittaka
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Kenichiro MATOHARA
文字コード略歴
文字コード略歴
Masafumi Yokoyama
文字コード勉強会
文字コード勉強会
典彦 平原
マイコンでマルチタスク
マイコンでマルチタスク
Katsuhiko Terawaki
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
文字コード入門 理論編 クイズ付き
文字コード入門 理論編 クイズ付き
Takao Baba
独学道場アセンブリの会
独学道場アセンブリの会
Ryota Suenaga
文字コードのお話
文字コードのお話
Shunji Konishi
Cコンパイラの改造(未)
Cコンパイラの改造(未)
7shi
文字コード基礎論A
文字コード基礎論A
京大 マイコンクラブ
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
京大 マイコンクラブ
Windows改造計画
Windows改造計画
京大 マイコンクラブ
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
5分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.0
Tadashi Mishima
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
よいコード、わるいコード
よいコード、わるいコード
京大 マイコンクラブ
Unicodeについて教えてgooでしつこくきいてみたよ♪
Unicodeについて教えてgooでしつこくきいてみたよ♪
1000 VICKY
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
create account book by c#
create account book by c#
Naoki Hanakawa
BCCとGCCの比較
BCCとGCCの比較
Naoki Hanakawa
The Art of Command Line (2021)
The Art of Command Line (2021)
Kenta Yamamoto
Vulnerability Detection Based on Git History
Vulnerability Detection Based on Git History
Kenta Yamamoto
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
Kenta Yamamoto
Contenu connexe
En vedette
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
文字コード入門 理論編 クイズ付き
文字コード入門 理論編 クイズ付き
Takao Baba
独学道場アセンブリの会
独学道場アセンブリの会
Ryota Suenaga
文字コードのお話
文字コードのお話
Shunji Konishi
Cコンパイラの改造(未)
Cコンパイラの改造(未)
7shi
文字コード基礎論A
文字コード基礎論A
京大 マイコンクラブ
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
京大 マイコンクラブ
Windows改造計画
Windows改造計画
京大 マイコンクラブ
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
5分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.0
Tadashi Mishima
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
よいコード、わるいコード
よいコード、わるいコード
京大 マイコンクラブ
Unicodeについて教えてgooでしつこくきいてみたよ♪
Unicodeについて教えてgooでしつこくきいてみたよ♪
1000 VICKY
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
create account book by c#
create account book by c#
Naoki Hanakawa
BCCとGCCの比較
BCCとGCCの比較
Naoki Hanakawa
En vedette
(19)
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
文字コード入門 理論編 クイズ付き
文字コード入門 理論編 クイズ付き
独学道場アセンブリの会
独学道場アセンブリの会
文字コードのお話
文字コードのお話
Cコンパイラの改造(未)
Cコンパイラの改造(未)
文字コード基礎論A
文字コード基礎論A
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
Windows改造計画
Windows改造計画
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
5分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.0
C++ マルチスレッド 入門
C++ マルチスレッド 入門
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
プログラムを高速化する話
プログラムを高速化する話
よいコード、わるいコード
よいコード、わるいコード
Unicodeについて教えてgooでしつこくきいてみたよ♪
Unicodeについて教えてgooでしつこくきいてみたよ♪
明日使えないすごいビット演算
明日使えないすごいビット演算
create account book by c#
create account book by c#
BCCとGCCの比較
BCCとGCCの比較
Plus de Kenta Yamamoto
The Art of Command Line (2021)
The Art of Command Line (2021)
Kenta Yamamoto
Vulnerability Detection Based on Git History
Vulnerability Detection Based on Git History
Kenta Yamamoto
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
Kenta Yamamoto
良いUrlを設計する
良いUrlを設計する
Kenta Yamamoto
私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか
Kenta Yamamoto
Tips for bash script
Tips for bash script
Kenta Yamamoto
優れたビデオゲームに共通する不変の法則
優れたビデオゲームに共通する不変の法則
Kenta Yamamoto
20110805 ui14課題2
20110805 ui14課題2
Kenta Yamamoto
20110804 ui14課題
20110804 ui14課題
Kenta Yamamoto
東日本大震災後の訪日外国人数の変移_2011.3
東日本大震災後の訪日外国人数の変移_2011.3
Kenta Yamamoto
Plus de Kenta Yamamoto
(10)
The Art of Command Line (2021)
The Art of Command Line (2021)
Vulnerability Detection Based on Git History
Vulnerability Detection Based on Git History
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
[論文紹介] VCC-Finder: Finding Potential Vulnerabilities in Open-Source Projects ...
良いUrlを設計する
良いUrlを設計する
私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか
Tips for bash script
Tips for bash script
優れたビデオゲームに共通する不変の法則
優れたビデオゲームに共通する不変の法則
20110805 ui14課題2
20110805 ui14課題2
20110804 ui14課題
20110804 ui14課題
東日本大震災後の訪日外国人数の変移_2011.3
東日本大震災後の訪日外国人数の変移_2011.3
Dernier
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Dernier
(11)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
文字コードとセキュリティ
1.
徳丸本輪読会 進撃の第6-7章 KentaYAMAMOTO 1Sunday, May 26,
13
2.
Agenda •文字コード(全38ページ) •携帯電話向け Web アプリケーション (たったの1ページ) 2Sunday,
May 26, 13
3.
6 文字コードとセキュリティ 3Sunday, May
26, 13
4.
UTF-8 使っとけばおk なんだお 4Sunday, May 26,
13
5.
徳丸本で 検証してみるか 5Sunday, May 26,
13
6.
文字コード…恐ろしい子! 6Sunday, May 26,
13
7.
文字コード文字コードと 言いますが、 次の3つの用語の違いがわかりますか? 7Sunday, May 26,
13
8.
•文字コード •文字集合 •文字エンコーディング この3者の違いがわかりますか? まずは定義厨になろう 8Sunday, May 26,
13
9.
大まかな理解: 文字コード = 文字集合
+ 文字エンコーディング 9Sunday, May 26, 13
10.
つまり「文字コード」とは 文字集合 (character set)
と 文字エンコーディング が 合わさった概念 (例) 僕達は普段どの文字集合を使うのかを文字 エンコーディングで指定している(符号化の方式 にはいろいろある)。 ということで、あってるかな^^;? 10Sunday, May 26, 13
11.
で、 文字集合 (character set)
とは •ASCII とか •JIS とか •Unicode とか あるよね 11Sunday, May 26, 13
12.
Unicode系JIS系 Shift_JIS EUC-JP UTF-8 UTF-16 で、こっちが 文字エンコーディングたち 12Sunday, May 26,
13
13.
人類の怠慢で 使用される文字集合が 統一されて来なかった悲劇 13Sunday, May 26,
13
14.
そこで生じた 異なる文字が同じコードに 割り当てられる問題 14Sunday, May 26,
13
15.
文字集合 0x5C 0xA5 ASCII
% JIS X 0201 ¥ ・ ISO-8859-1 ¥ Unicode ¥ 例 15Sunday, May 26, 13
16.
文字集合 0x5C 0xA5 ASCII
% JIS X 0201 ¥ ・ ISO-8859-1 ¥ Unicode ¥ ちょw 例 16Sunday, May 26, 13
17.
¥ 17Sunday, May 26,
13
18.
やばいケースの例 Unicode 「¥」(U+00A5) JIS系 「¥」(0x5C) 「円記号」だから 変換しておこう JIS系 「¥」(0x5C) 「¥」(0x5C)なの でエスケープ処理を華麗にス ルー 突然のバック スラッシュ 「」! Unicodeに戻す (0x5C) 死のSQL インジェクション 18Sunday, May 26,
13
19.
やばいケースの例 Unicode 「¥」(U+00A5) JIS系 「¥」(0x5C) 「円記号」だから 変換しておこう JIS系 「¥」(0x5C) 「¥」(0x5C)なの でエスケープ処理を華麗にス ルー 突然のバック スラッシュ 「」! Unicodeに戻す (0x5C) 処理系によっては こうなりますよと いう話 19Sunday, May 26,
13
20.
Shift_JIS の仕組みを見てみましょう 結構効率は良いらしい しかし… 20Sunday, May
26, 13
21.
問題(2) 符号化された文字列の1バイトを 取り出しても先行バイトか 後続バイトか分からない 同じ 0x81
~ 0x9F 0xE0 ~ 0xFC だからね 問題(1) 1バイト文字と2バイト文字の後続バイトに重なりがある 21Sunday, May 26, 13
22.
Shift_JIS の問題 (1) いわゆる「5C」問題 「表」の2バイト目に
¥ がマッチする 22Sunday, May 26, 13
23.
<?php $p = strpos(
ラリルレロ , 宴 ); var_dump($p); // => 1 Shift_JIS の問題 (2) 先行か後続か分からない問題 文字列 ラリルレロ の中で、 宴 が最初に現れる位置 を探す strpos 関数。 => false を期待したが無情なまでの 1(0オリジン) 23Sunday, May 26, 13
24.
Shift_JIS の問題 (2) 先行か後続か分からない問題 「ラ」の2バイト目と 「リ」の1バイト目にマッチしちゃってる 24Sunday,
May 26, 13
25.
1. 例えば、strpos 関数を避ける。 代わりにマルチバイト対応の mb_strpos
を使う(内部エンコーディ ングは Shift_JIS を指定)。 2. UTF-8 を利用する(保険) Shift_JIS こういった問題の対策 25Sunday, May 26, 13
26.
「5C問題」の EUC-JP 版はないが、 「先行後続バイト問題」はあるので。 ちなみに
EUC-JP の 脆弱性にも有効です 26Sunday, May 26, 13
27.
index.php? name=1%82&mail=onmouseov er%dalert(document.cookie)// FYI: Shift_JIS こんな攻撃あります 27Sunday, May
26, 13
28.
FYI: Shift_JIS こんな攻撃あります こんなあられもない姿に (*ノノ) うひょ∼ 28Sunday,
May 26, 13
29.
FYI: Shift_JIS こんな攻撃あります 対策: htmlcpecialchars($GET[ name
], ENT_QUOTES, Shift_JIS ); を使いましょう 29Sunday, May 26, 13
30.
対策まとめ 4つのチェックポイント 1. 全体 2.
入力 3. 処理 4. 出力 30Sunday, May 26, 13
31.
「文字集合の統一」 31Sunday, May 26,
13
32.
できないよね ガラケーって Shift_JIS 指定も多いから 32Sunday,
May 26, 13
33.
とはいえポイントは一緒 なので 対策の要点だけ紹介します 33Sunday, May 26,
13
34.
ガラケーチェックポイント 不正な文字エンコーディングは弾くか 代替文字 (U+FFFD) に変換 34Sunday,
May 26, 13
35.
ガラケーチェックポイント ※これは一緒 マルチバイトセーフ関数と 引数に文字エンコーディングの明示 35Sunday, May 26,
13
36.
ガラケーチェックポイント HTTPレスポンスヘッダ Content-Type 指定 ※ ガラケーは
Shift_JIS それ以外は UTF-8 36Sunday, May 26, 13
37.
ガラケーチェックポイント 「尾骶骨テスト」 37Sunday, May 26,
13
38.
ガラケーチェックポイント 「尾骶骨テスト」 「表」や「ソ」、「能¥」が 正しく登録・表示されるか 38Sunday, May 26,
13
39.
徳丸語「文字集合縮退」 起こるべき文字化けをあら かじめ起こしたあとでエス ケープする これでDBに ¥ が入ってい てもバックスラッシュに変 換された後エスケープされ る 39Sunday,
May 26, 13
40.
ということで UTF-8 40Sunday, May 26,
13
41.
41Sunday, May 26,
13
42.
非最短形式の問題 http://gihyo.jp/admin/serial/ 01/charcode/0004 UTF-8 が完璧なわけではない PHP5.3.1 以前の
htmlspecialchars 関数は 非最短形式を許容してしまうので注意 42Sunday, May 26, 13
43.
PHP以外では: 既にあたり前になりつつ ある文字エンコーディングバリデーショ ン -
徳丸浩の日記(2009-09-14) http://www.tokumaru.org/d/ 20090914.html そのころPHP以外では… 43Sunday, May 26, 13
44.
7 携帯電話向け Web アプリケーションの脆弱性対策 44Sunday,
May 26, 13
45.
脅威 対策 かんたんログインに対する不正アクセス 携帯IDによる認証をやめ、IDとパスワードによる認証にする。オプ ションでクッキーによる自動ログインを実装する。 Referer によるセッションID漏洩 以下のいずれかを実施する ・クッキーによるセッション管理に移行する ・外部サイトにリンクしない ・外部サイトにリンクする際にはクッションページをはさむ その他のセッションID漏洩
利用者がメールでURLを教えることには根本的な対策はない ログイン前のセッションIDの固定化 ログイン前にはセッションを有効化しない ログイン後のセッションIDの固定化 ログイン直後にセッションIDを変更する 45Sunday, May 26, 13
46.
ガラケーに関する細かいことはまた今度だ 46Sunday, May 26,
13
Télécharger maintenant