文字コードに起因する脆弱性とその対策(増補版)

Hiroshi Tokumaru
Hiroshi TokumaruSecurity Engineer at EG Secure Solutions Inc.
文字コードに起因する脆弱性とその対策
2010年10月30日
徳丸 浩
Copyright © 2010 HASH Consulting Corp. 2
本日お話しする内容
• 文字コード超入門
• 文字コードの扱いに起因する脆弱性デモ6+1連発
• 文字コードの扱いに関する原則
• 現実的な設計・開発指針
• まとめ
前提とする内容
• 文字コードに起因する脆弱性とは
– 正しいセキュリティ対策をしているかに見えるコードにおいて、
文字コードの取り扱いが原因で生じる脆弱性
• 以下の脆弱性に関する一般的な知識は既知のものとします
– SQLインジェクション脆弱性
– クロスサイト・スクリプティング(XSS)脆弱性
– パストラバーサル脆弱性
Copyright © 2010 HASH Consulting Corp. 3
Copyright © 2010 HASH Consulting Corp. 4
徳丸浩の自己紹介
• 経歴
– 1985年 京セラ株式会社入社
– 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍
– 2008年 KCCS退職、HASHコンサルティング株式会社設立
• 経験したこと
– 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当
– その後、企業向けパッケージソフトの企画・開発・事業化を担当
– 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当
Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始
– 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ
• その他
– 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開
「大学時代のPascal演習がCabezonでした」という方にお目にかかることも
• 現在
– HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/
– 京セラコミュニケーションシステム株式会社 技術顧問 http://www.kccs.co.jp/security/
– 独立行政法人情報処理推進機構 非常勤研究員 http://www.ipa.go.jp/security/
本を書いています
Copyright © 2010 HASH Consulting Corp. 5
文字コード超入門
Copyright © 2010 HASH Consulting Corp. 6
文字コードとはなにか
• 用語集的な説明は割愛
• 文字コード = 文字集合 + 文字エンコーディング
• 文字集合
– 文字集合とは、文字を集めたもの
– 符号化文字集合とは、集めた文字に符号(番号)をつけたもの
– 代表的な(符号化)文字集合
ASCII、ISO-8859-1、JIS X 0201、JIS X 0208、JIS X 0213
• 文字エンコーディング(文字符号化方式)
– 文字集合を使ってコンピュータ処理するために、文字をバイト列とし
て表現する方式
– 文字集合は複数でもよい(ASCII + JIS X 0208など)
– 代表的な文字エンコーディング
Shift_JIS、EUC-JP、UTF-8、UTF-16
7Copyright © 2010 HASH Consulting Corp.
代表的な文字集合
Copyright © 2010 HASH Consulting Corp. 8
1バイト文字集合の包含関係
Copyright © 2010 HASH Consulting Corp. 9
多バイト文字集合の包含関係
Copyright © 2010 HASH Consulting Corp. 10
文字集合の変更に注意
• 文字集合を変更すると、一対一対応でない箇所で文字化け
等の原因になる
Copyright © 2010 HASH Consulting Corp. 11
5CとA5には特に注意
Copyright © 2010 HASH Consulting Corp. 12
• 文字集合によって、円記号の位置が異なるので、文字集合
が変更された場合に事故の元になる可能性がある
Shift_JIS
• JIS X 0201と英数片仮名とJIS X 0208の漢字(第一、第2水
準)を混在できる文字エンコーディング
• 1バイトor 2バイトで1文字を表現。ビット利用効率が高い
• 1バイト文字と後続バイト文字の領域が重なっているので、い
わゆる「5C問題」が発生する
例えば「表」という文字の2バイト目
が「¥」にマッチする
Copyright © 2010 HASH Consulting Corp. 13
EUC-JP
• UNIX上で日本語を扱うために開発された文字エンコーディ
ング
• ASCIIとJIS X 0208を混在して利用可能。JIS X 0201の片
仮名(いわゆる半角片仮名)も、2バイトで表現可能
• 1バイト文字と後続バイトは領域が重ならないので、5C問題
は発生しない
• しかし、文字境界をまたがって
マッチングする場合はある
=螢問題 (オレ呼称につき注意)
Copyright © 2010 HASH Consulting Corp. 14
UTF-8
• Unicodeの文字エンコーディング。ASCIIと互換性を持たせる
ため、1~4バイトで1文字を表現。
• 1バイト文字、先行バイト、後続バイトの領域はまったく重なら
ないので、5C問題や「螢問題」は発生しない
• しかし、「非最短形式問題」には注意
Copyright © 2010 HASH Consulting Corp. 15
UTF-8の非最短形式
Copyright © 2010 HASH Consulting Corp. 16
• UTF-8で、Nバイトで表現できる文字は、N+1バイト以上の形
式でも表現できる(計算上は)
• 同じ文字がバイト列上は「別の文字」と判定されるため、脆弱
性の原因になる。現在は非最短形式は禁止されている
• PHPのmbstringは、非最短形式のUTF-8をエラーにするが、
htmlspecialcharsは最近(5.3.1)までエラーにしなかった
• JREは比較的最近(Java SE6 Update10)までUTF-8の非最
短形式を許容していた
スラッシュ「/」の非最短形式
UTF-7
• 7ビットでUnicodeを符号化する方式
• 元々電子メールでの利用を想定していたが、現在規格上は
廃止されている
• 後方互換のため(ホントか?)主要ブラウザで現在でも利用で
きる
• 英数字と一部の記号はASCIIそのまま、それ以外の文字は
以下の方式で変換
UTF-16で符号化 → Base64エンコーディング →
先頭に「+」、末尾に「-」を追加
• <script>alert(1)</script>はこうなる
+ADw-script+AD4-alert(1)+ADw-/script+AD4-
Copyright © 2010 HASH Consulting Corp. 17
文字コードの扱いに起因する
脆弱性デモ6+1連発
18Copyright © 2010 HASH Consulting Corp.
デモの前に
• 脆弱性サンプル(デモ)の三原則
–何かしら役にたつ機能を備えること
–現場で「やってしまいそうな」想定であること
–ターゲット以外の脆弱性を含まないこと
• それ、SQLインジェクションなくてもできるよ
Copyright © 2010 HASH Consulting Corp. 19
デモ1:半端な先行バイトによるXSS
• 半端な先行バイトとは
– Shift_JIS、EUC-JP、UTF-8などマルチバイト文字の1バ
イト目だけが独立して存在する状態
– 次の文字が、マルチバイト文字の2バイト目以降の文字と
して「食われる」状況になる
– input要素などの引用符「”」を食わせて、イベントハンドラ
を注入する攻撃
Copyright © 2010 HASH Consulting Corp. 20
デモ1:PHPソース
<?php
session_start();
header('Content-Type: text/html; charset=Shift_JIS');
$p1 = @$_GET['p1'];
$p2 = @$_GET['p2'];
?>
<body>
<form>
PHP Version:<?php
echo htmlspecialchars(phpversion(), ENT_NOQUOTES,
'Shift_JIS'); ?><BR>
<input name=p1 value="<?php echo
htmlspecialchars($p1, ENT_QUOTES, 'Shift_JIS'); ?>"><BR>
<input name=p2 value="<?php echo
htmlspecialchars($p2, ENT_QUOTES, 'Shift_JIS'); ?>"><BR>
<input type="submit" value="更新">
</form>
</body>
Copyright © 2010 HASH Consulting Corp. 21
デモ1:半端な先行バイトによるXSS
• 半端な先行バイトによるXSSが発生する条件は、以下のい
ずれかを満たす場合
– htmlspecialcharsの第3引数を指定していない
– PHPの5.2.11以前あるいはPHP5.3.1以前を使用
• 対策としては、以下の両方を行う
– PHPの最新版を使う
– htmlspecialcharsの第3引数を指定する
Copyright © 2010 HASH Consulting Corp. 22
<input name=p1 value="・><BR>
<input name=p2 value=" onmouseover=alert(document.cookie)//"><BR>
閉じる引用符が食われた状態
ここで最初の属性値がようやく終了 第二の属性値がイベントハンドラに
デモ2:UTF-8非最短形式によるパストラバーサル
String msg = "";
String pathname = "";
try {
String path = request.getParameter("path");
File f = new File(path);
// パス名からファイル名を取り出す(PHPのbasename())
String filebody = f.getName();
// UTF-8としてデコード
filebody = new String(
filebody.getBytes("ISO-8859-1"), "UTF-8");
// ディレクトリを連結
pathname = "c:/home/data/" + filebody;
// 以下ファイル読み出し
FileReader fr = new FileReader(pathname);
BufferedReader br = new BufferedReader(fr);
・・・
Copyright © 2010 HASH Consulting Corp. 23
• 脆弱性が発生する条件(AND条件)
– Java SE6 update10以前を使用
– 文字エンコーディング変換前にファイル名をチェックしている
Copyright © 2010 HASH Consulting Corp. 24
デモ3:5C問題によるSQLインジェクション
• 5C問題とは
– Shift_JIS文字の2バイト目に0x5Cが来る文字に起因する問題
ソ、表、能、欺、申、暴、十 … など出現頻度の高い文字が多い
– 0x5CがASCIIではバックスラッシュであり、ISO-8859-1など1バイト
文字と解釈された場合、日本語の1バイトがバックスラッシュとして
取り扱われる
– 一貫して1バイト文字として取り扱われれば脆弱性にならないが、1
バイト文字として取り扱われる場合と、Shift_JISとして取り扱われる
場合が混在すると脆弱性が発生する
Copyright © 2010 HASH Consulting Corp. 25
ソースコード(要点のみ)
<?php
header('Content-Type: text/html; charset=Shift_JIS');
$key = @$_GET['name'];
if (! mb_check_encoding($key, 'Shift_JIS')) {
die('文字エンコーディングが不正です');
}
// MySQLに接続(PDO)
$dbh = new PDO('mysql:host=localhost;dbname=books', 'phpcon', 'pass1');
// Shift_JISを指定
$dbh->query("SET NAMES sjis");
// プレースホルダによるSQLインジェクション対策
$sth = $dbh->prepare("SELECT * FROM books WHERE author=?");
$sth->setFetchMode(PDO::FETCH_NUM);
// バインドとクエリ実行
$sth->execute(array($key));
?>
Copyright © 2010 HASH Consulting Corp. 26
5C問題によるSQLインジェクションの説明
Copyright © 2010 HASH Consulting Corp. 27
デモ4:UTF-7によるXSS
<?php
session_start();
header('Content-Type: text/html; charset=EUCJP');
$p = @$_GET['p'];
if (! mb_check_encoding($p, 'EUCJP')) {
die('Invalid character encoding');
}
?>
<body>
<?php echo
htmlspecialchars($p, ENT_NOQUOTES, 'EUCJP'); ?>
</body>
Copyright © 2010 HASH Consulting Corp. 28
UTF-7によるXSSの説明
HTTP/1.1 200 OK
Content-Length: 187
Content-Type: text/html; charset=EUCJP
<body>
+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-
</body>
Copyright © 2010 HASH Consulting Corp. 29
<body>
<script>alert(document.cookie)</script>
</body>
EUCJPという文字エンコーディングを
IEは認識できない(正しくはEUC-JP)
IEはレスポンスの内容から、このコン
テンツはUTF-7と判定する
HTTPレスポンス
UTF-7として解釈されたコンテンツ
JavaScriptが
起動される
デモ5:U+00A5によるSQLインジェクション
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/books?user=phpcon&passwor
d=pass1");
String sql = "SELECT * FROM books where author=?";
// プレースホルダ利用によるSQLインジェクション対策
PreparedStatement stmt = con.prepareStatement(sql);
// ? の場所に値を埋め込む(バインド)
stmt.setString(1, key);
ResultSet rs = stmt.executeQuery(); // クエリの実行
Copyright © 2010 HASH Consulting Corp. 30
U+00A5によるSQLインジェクションの原理
31IPA:安全なSQLの呼び出し方(http://www.ipa.go.jp/security/vuln/websecurity.html)より引用
U+00A5によるSQLインジェクションの条件と対策
• 脆弱性が発生する条件
– JDBCとしてMySQL Connector/J 5.1.7以前を使用
– MySQLとの接続にShift_JISあるいはEUC-JPを使用
– 静的プレースホルダを使わず、エスケープあるいは動的プレースホ
ルダ(クライアントサイドのバインド機構)を利用している
• 対策(どれか一つで対策になるがすべて実施を推奨)
– MySQL Connector/Jの最新版を利用する
– MySQLとの接続に使用する文字エンコーディングとして
Unicode(UTF-8)を指定する
(接続文字列にcharacterEncoding=utf8を指定する)
– 静的プレースホルダを使用する
(接続文字列にuseServerPrepStmts=trueを指定する)
Copyright © 2010 HASH Consulting Corp. 32
デモ6:U+00A5によるXSS
// PHPでもU+00A5がバックスラッシュに変換されるパターンはないか
<?php
header('Content-Type: text/html; charset=Shift_JIS');
$p = @$_GET['p'];
// JSエスケープ ¥→¥¥ '→¥' "→ ¥"
$p1 = preg_replace('/(?=[¥¥¥¥¥¥¥'¥¥"])/u' , '¥¥', $p);
$p2 = htmlspecialchars($p1, ENT_QUOTES, 'UTF-8');
?>
<html><head>
<script type="text/javascript">
function foo($a) {
document.getElementById("foo").innerText= $a;
}
</script></head>
<body onload="foo('<?php echo $p2; ?>')">
p=<span id="foo"></span>
</body>
</html>
Copyright © 2010 HASH Consulting Corp. 33
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = cp932
mbstring.encoding_translation = On
mbstring.detect_order = SJIS-win,UTF-8,eucJP-win
U+00A5によるXSSが発生する原理と条件
• 脆弱性が発生する条件
– PHP5.3.3(以降)を利用している
• それより前のバージョンでは、U+00A5は全角の「¥」に変換されていた
– 以下の文字エンコーディング
• 入力:自動、あるいはなんらかの経路でU+00A5の文字が入る
• 内部:UTF-8
• 出力:cp932 あるいは cp51932
Copyright © 2010 HASH Consulting Corp. 34
デモ7
• ASP.NET + MS SQL Server + JSON
• 1行掲示板
• 問題の原因はMS SQL Serverの以下のテーブル定義
CREATE TABLE chat1 (
id int IDENTITY (1, 1) NOT NULL ,
ctime datetime NOT NULL,
body varchar (150) NOT NULL,
json varchar (200) NOT NULL
)
• json列にJSON形式に加工済みの投稿情報を格納して、閲
覧時には「そのまま」レスポンスとして返す
• 問題はどこに?
Copyright © 2010 HASH Consulting Corp. 35
投稿スクリプト
sqlUrl = "Server=labo1; database=tokumaru;user id=sa;password=xxxxx”
dbcon = New SqlConnection(sqlUrl) 'DBコネクション作成
dbcon.Open() 'DB接続
sqlStr = "insert into chat1 values(sysdatetime(), @body, @json)"
dbcmd = New SqlCommand(sqlStr, dbcon)
body = Request("body")
e_body = Regex.Replace(body, "([<>¥¥'""])", "¥$1")
e_body = Regex.Replace(e_body, "[¥r¥n]", "")
' JSON組み立て
json = "{""ctime"":""" _
& DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") _
& """, ""body"":""" & e_body & ""“}"
' パラメータ
dbcmd.Parameters.Add(New SqlParameter("@body", body))
dbcmd.Parameters.Add(New SqlParameter("@json", json))
dbResult = dbcmd.ExecuteNonQuery()
Copyright © 2010 HASH Consulting Corp. 36
表示(HTML)
<html><head><script src="jquery-1.4.3.min.js"></script>
<script>
function load()
{
var requester = new XMLHttpRequest();
requester.open('GET', 'json.aspx', true);
requester.onreadystatechange = function() {
if (requester.readyState == 4) {
onloaded(requester);
}
};
requester.send(null);
}
function onloaded(requester)
{
res = requester.responseText;
obj = eval("(" + res + ")");
$('#result').text(obj.ctime + ":" + obj.body);
}
</script></head><body>
<input type="button" onclick="load();" value="hoge"/>
<div id="result"></div></body>
Copyright © 2010 HASH Consulting Corp. 37
表示(JSON)
sqlUrl = "Server=labo1; database=tokumaru;user id=sa;password=xxxx"
dbcon = New SqlConnection(sqlUrl) 'DBコネクション作成
dbcon.Open() 'DB接続
sqlStr = "select top 1 * from chat1 order by id desc"
dbcmd = New SqlCommand(sqlStr, dbcon)
'SQL文実行
dataRead = dbcmd.ExecuteReader()
dataRead.Read()
Response.AddHeader("Cache-Control", "no-cache")
Response.AddHeader("Content-Type", "application/json")
'ラベルに表示
Response.write(dataRead("json")) ' エスケープ済みなのでそのまま表示
Copyright © 2010 HASH Consulting Corp. 38
脆弱性の原因
• MS SQL Serverのvarcharは、CP932(マイクロソフト標準キ
ャラクタセットのShift_JIS)となる
• Unicodeの列はnvarcharで宣言すること
• varchar型の列にinsertする際に、Unicode→CP932の文字
エンコーディング(文字集合)の変換が発生する
– U+00A5(円記号)は0x5Cに
Copyright © 2010 HASH Consulting Corp. 39
対策
• 以下のいずれかを実施すれば脆弱性は発生しない
– JSONの組み立てを表示(出力)の直前に行う
• DB格納前の組み立ては危険
– 英数字以外の文字は、Unicode形式でエスケープする
• ¥uNNNNの形式
• いわゆる過剰エスケープ(個人的には嫌いだがやむなし)
– 文字集合の変更をしない(nvarcahr型の列を使う)
– JSONの解釈にevalを使わない
• jQuery使うなら、とことん使えよ
• JSONPの場合は、実質evalと同じなので他の対策で…
• 「いずれか」ではなく「すべて実施」を推奨
Copyright © 2010 HASH Consulting Corp. 40
文字コードの扱いに関する原則
Copyright © 2010 HASH Consulting Corp. 41
これまでのデモを原因別に分類すると…
• 文字エンコーディングとして不正なデータによる攻撃
– デモ1:半端な先行バイトによるXSS
– デモ2:UTF-8非最短形式によるパストラバーサル
• 文字エンコーディングとして不正でなく、マルチバイト文字対
応が不十分なもの
– デモ3:5C問題によるSQLインジェクション
– デモ4:UTF-7によるXSS
• 文字集合の変更が原因となるもの
– デモ5:U+00A5によるSQLインジェクション
– デモ6:U+00A5によるXSS
– デモ7:U+00A5によるスクリプトインジェクション
Copyright © 2010 HASH Consulting Corp. 42
不正な文字エンコーディング対策
• 入力時点でのアプローチ
– 以下のいずれか、あるいは両方を実施する
• すべての入力値の文字エンコーディングの妥当性をチェックする
• 文字エンコーディングの変換を行う(不正な文字エンコーディングは削除)
– Javaや.NETは内部UTF-16なので必ず文字エンコーディングが変
換される。PHPはそのようなキマリがないので開発側で要注意
– PHP6で内部UTF-16になるハズだったのだが…
• 出力(文字列を使う)時点でのアプローチ
– 文字列を「使う」際の関数・APIが文字エンコーディングに対応してい
れば、脆弱性は発生しない
– 最新の処理系(PHP、JRE等)を使う
– 文字エンコーディング指定をさぼらない
• どっちをすればいいのか?
– 両方やる
Copyright © 2010 HASH Consulting Corp. 43
44
文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定
;; 出力バッファリングを無効にする (これはOn でもよい)
output_buffering = Off
;; HTTPレスポンスの文字エンコーディングを設定
default_charset = UTF-8
;; デフォルトの言語を日本語にする
mbstring.language = Japanese
;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On
;; HTTP 入力エンコーディング変換を UTF-8 に設定(UTF-8→UTF-8の変換)
mbstring.http_input = UTF-8
;; HTTPレスポンスは変換しない
mbstring.http_output = pass
;; 内部エンコーディングを UTF-8 に設定
mbstring.internal_encoding = UTF-8
;; 無効な文字は「?」に
mbstring.substitute_character = "?"
Copyright © 2010 HASH Consulting Corp. 45続きはWebで http://www.tokumaru.org/d/20100927.html#p01
マルチバイト文字対応を十分にするとは
• 一口で説明すると、「それぞれの処理を規格通りに正しく処
理せよ」としか言えない
• HTTPレスポンスに「ブラウザが認識できる形式」で文字エン
コーディングを指定する
– ○ Shift_JIS / EUC-JP / UTF-8
– × SJIS / cp932 / Shift-JIS / SJIS-win / EUCJP / UTF8
• すべての文字列処理でマルチバイト対応の関数を使用する
– ここは日本語はない「はず」というのはやめた方がいい
• htmlspecialcharsの第3引数(文字エンコーディング)は必ず
指定する
• データベース接続ライブラリには文字エンコーディングが指
定できるものを選び、正しく指定する
• Shift_JISは避けた方がよい
Copyright © 2010 HASH Consulting Corp. 46
クイズ:この関数はなにをするか分かりますか?
Copyright © 2010 HASH Consulting Corp. 47
function isZenKana($ch) {
$kanas = 'ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾ
タダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュ
ユョヨラリルレロヮワヰヱヲンヴヵヶ';
return strpos($kanas, $ch) !== false;
}
mb_strposをつかうべき
文字集合の変更が原因となるもの
• 文字集合の変更が脆弱性の原因になる場合がある
– 多対一の変換 U+00A5 → など
• もっとも確実な解決策は、入り口から出口のすべての経路
で、文字集合を変更しないこと
– ○ UTF-8 → UTF-8 → UTF-8
– ○ UTF-8 → UTF-16 → UTF-8
– ○ Shift_JIS → EUC-JP → Shift_JIS
– × Shift_JIS → UTF-8 → Shift_JIS
• やむを得ず文字集合を変更する場合は、エスケープやチェッ
ク処理の前に、あらかじめ多対一変換が起こしておくとよい
– 入り口で文字集合を絞り込む(Shift_JISに変換してからUTF-8に戻
すなど)
Copyright © 2010 HASH Consulting Corp. 48
PC・モバイル対応サイトでは文字集合の変更を伴う
Copyright © 2010 HASH Consulting Corp. 49
文字集合の縮退を実施すれば安心・安全
Copyright © 2010 HASH Consulting Corp. 50
現実的な設計・開発指針
Copyright © 2010 HASH Consulting Corp. 51
文字コードの選定
• 以下の3パターンから選ぶ(Shift_JISは携帯電話向け)
– UU:すべてUTF-8で通す(推奨)
– JJ:外部はShift_JIS、内部はEUC-JP
– JU:外部はShift_JIS、内部はUTF-8
• JUパターンは文字集合の変更を伴うので以下のいずれかを
実施する
– JIS文字集合にない文字が現れないことを保証する
– JIS文字集合にない文字が現れる可能性がある場合は、「文字集合
の縮退」処理を行う
– 対症療法を実施する
• JavaScript文字列リテラルを動的生成を避け、hiddenパラメータを生成して、
DOMで読み込む(¥が問題になるコーディングをしない)
• cp932とcp51932を避ける
Copyright © 2010 HASH Consulting Corp. 52
簡単にできるテスト
• 以下の文字を入力・登録して、どのように表示されるかを調
べる
– ¥ (U+00A5) バックスラッシュに変換されないか
– 骶 (U+9AB6) JIS X 0208にない文字
– 𠮷 (U+20BB7) BMP外の文字 UTF-8では4バイトになる
• 尾骶骨テストや「つちよし」テストで、Unicodeがきちんと通る
か確認しよう
Copyright © 2010 HASH Consulting Corp. 53
処理に関する指針
• 入り口:以下のいずれかを行う
– mb_check_encodingにより文字エンコーディングをチェックする
– mb_convert_encodingにより文字エンコーディングを変換する
– php.iniの設定により自動的に文字エンコーディングを変換する
※いずれの場合も、文字エンコーディングは明示する
• プログラム内の処理
– mbstringの内部文字コード(mbstring.internal_encoding)を設定
– すべての文字列処理でマルチバイト対応の関数を使用する
– 文字エンコーディングのデフォルトが内部文字コートでない関数に
は文字エンコーディングを必ず指定する
• 出力(表示)
– レスポンスヘッダに文字エンコーディングを正しく設定する
– htmlspecialcharsの文字エンコーディングは必ず指定する
Copyright © 2010 HASH Consulting Corp. 54
データベースに関する指針
• 文字エンコーディング指定のできるデータベース接続ライブ
ラリを選定し、文字エンコーディングを正しく指定する
• 静的プレースホルダを使うよう指定する、
あるいはプログラミングする
• 詳しくは「安全なSQLの呼び出し方」を参照
http://www.ipa.go.jp/security/vuln/websecurity.html
Copyright © 2010 HASH Consulting Corp. 55
$dbh = new PDO('mysql:host=xxxx;dbname=xxxx;charset=cp932',
'user', 'pass', array(
PDO::MYSQL_ATTR_READ_DEFAULT_FILE => '/etc/mysql/my.cnf',
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP => 'client', ));
# http://gist.github.com/459499 より引用(by id:nihen)
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,
false);
Copyright © 2010 HASH Consulting Corp. 56
まとめ
• 正しい脆弱性対策をしていても、文字コードの扱いにより脆
弱性が混入する場合がある
• 文字コードの選定
• 入力時に不正な文字エンコーディングを排除
• 処理毎の正しい文字エンコーディングの取り扱い
– マルチバイト対応の関数を選定
– 文字エンコーディングを指定
• 出力時の文字エンコーディングの扱い
– レスポンスヘッダに文字エンコーディングを明示
– htmlspecialcharsの文字エンコーディング指定を忘れずに
• データベースの文字エンコーディング指定と静的プレースホ
ルダの利用
(例えばShift_JISを避ける)
ご清聴ありがとうございました
1 of 57

Recommended

SPAセキュリティ入門~PHP Conference Japan 2021 by
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
99.6K views107 slides
Redisの特徴と活用方法について by
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
101.6K views65 slides
XSS再入門 by
XSS再入門XSS再入門
XSS再入門Hiroshi Tokumaru
88.5K views31 slides
Where狙いのキー、order by狙いのキー by
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
39.6K views109 slides
とある診断員とSQLインジェクション by
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクションzaki4649
78.6K views47 slides
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について by
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
2.7K views59 slides

More Related Content

What's hot

本当は恐ろしい分散システムの話 by
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
686.2K views70 slides
初心者向けMongoDBのキホン! by
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
52.5K views21 slides
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa... by
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...Insight Technology, Inc.
7.7K views44 slides
分散システムについて語らせてくれ by
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
119.4K views45 slides
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
88.2K views89 slides
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
148.7K views45 slides

What's hot(20)

本当は恐ろしい分散システムの話 by Kumazaki Hiroki
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki686.2K views
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa... by Insight Technology, Inc.
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
分散システムについて語らせてくれ by Kumazaki Hiroki
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki119.4K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by Koichiro Matsuoka
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka88.2K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by Takuto Wada
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada148.7K views
ウェブセキュリティのありがちな誤解を解説する by Hiroshi Tokumaru
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru5.3K views
O/Rマッパーによるトラブルを未然に防ぐ by kwatch
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch48.4K views
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方 by Hiroshi Tokumaru
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Hiroshi Tokumaru2.7K views
SQLインジェクション総”習”編 by Yasuo Ohgaki
SQLインジェクション総”習”編SQLインジェクション総”習”編
SQLインジェクション総”習”編
Yasuo Ohgaki56.5K views
コンテナにおけるパフォーマンス調査でハマった話 by Yuta Shimada
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada2.2K views
Proxy War by zaki4649
Proxy WarProxy War
Proxy War
zaki464914.7K views
Javaのログ出力: 道具と考え方 by Taku Miyakawa
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa74.3K views
例外設計における大罪 by Takuto Wada
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada68.6K views
IoT時代におけるストリームデータ処理と急成長の Apache Flink by Takanori Suzuki
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki28K views
マイクロにしすぎた結果がこれだよ! by mosa siru
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru132.6K views
PostgreSQLアンチパターン by Soudai Sone
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone48.3K views
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方 by kwatch
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch34K views
Fluentdのお勧めシステム構成パターン by Kentaro Yoshida
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida51.1K views
SolrとElasticsearchを比べてみよう by Shinsuke Sugaya
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya52.3K views

Viewers also liked

徳丸本に載っていないWebアプリケーションセキュリティ by
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティHiroshi Tokumaru
51.1K views75 slides
ログイン前セッションフィクセイション攻撃の脅威と対策 by
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策Hiroshi Tokumaru
19.9K views16 slides
辞書攻撃をする人は何をどう使っているのか by
辞書攻撃をする人は何をどう使っているのか辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのかozuma5119
32.8K views26 slides
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API by
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIYosuke HASEGAWA
12.9K views37 slides
いまさら聞けないパスワードの取り扱い方 by
いまさら聞けないパスワードの取り扱い方いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方Hiroshi Tokumaru
56.9K views29 slides
とある診断員と色々厄介な脆弱性達 by
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達zaki4649
27.1K views37 slides

Viewers also liked(20)

徳丸本に載っていないWebアプリケーションセキュリティ by Hiroshi Tokumaru
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru51.1K views
ログイン前セッションフィクセイション攻撃の脅威と対策 by Hiroshi Tokumaru
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策
Hiroshi Tokumaru19.9K views
辞書攻撃をする人は何をどう使っているのか by ozuma5119
辞書攻撃をする人は何をどう使っているのか辞書攻撃をする人は何をどう使っているのか
辞書攻撃をする人は何をどう使っているのか
ozuma511932.8K views
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API by Yosuke HASEGAWA
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
Yosuke HASEGAWA12.9K views
いまさら聞けないパスワードの取り扱い方 by Hiroshi Tokumaru
いまさら聞けないパスワードの取り扱い方いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方
Hiroshi Tokumaru56.9K views
とある診断員と色々厄介な脆弱性達 by zaki4649
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
zaki464927.1K views
他人事ではないWebセキュリティ by Yosuke HASEGAWA
他人事ではないWebセキュリティ他人事ではないWebセキュリティ
他人事ではないWebセキュリティ
Yosuke HASEGAWA24.4K views
安全なPHPアプリケーションの作り方2014 by Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru55.3K views
PHPでセキュリティを真面目に考える by Takuya Sato
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
Takuya Sato34.8K views
90分間濃縮 PHPエラーの教室 by Yusuke Ando
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
Yusuke Ando16.5K views
文字コードの脆弱性はこの3年間でどの程度対策されたか? by Hiroshi Tokumaru
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru32.7K views
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに by Hiroshi Tokumaru
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
Hiroshi Tokumaru9.1K views
文字コード入門 理論編 クイズ付き by Takao Baba
文字コード入門 理論編 クイズ付き文字コード入門 理論編 クイズ付き
文字コード入門 理論編 クイズ付き
Takao Baba5K views
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう by Hiroshi Tokumaru
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
Hiroshi Tokumaru52.8K views
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか by Hiroshi Tokumaru
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru74.4K views
安全なPHPアプリケーションの作り方2016 by Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
Hiroshi Tokumaru36.8K views
マイクロソフトにとってのWebって? by Microsoft
マイクロソフトにとってのWebって?マイクロソフトにとってのWebって?
マイクロソフトにとってのWebって?
Microsoft8.6K views
パッチを書いてみよう(第17回Nseg勉強会LT) by Masahiro Yamada
パッチを書いてみよう(第17回Nseg勉強会LT)パッチを書いてみよう(第17回Nseg勉強会LT)
パッチを書いてみよう(第17回Nseg勉強会LT)
Masahiro Yamada1.1K views

Similar to 文字コードに起因する脆弱性とその対策(増補版)

今日こそわかる、安全なWebアプリの作り方2010 by
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010Hiroshi Tokumaru
9.1K views112 slides
Webシステム脆弱性LT資料 by
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
1.1K views23 slides
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012 by
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012Hiroshi Tokumaru
14.6K views99 slides
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察 by
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察Ruo Ando
400 views17 slides
Share pointを支えるsql server2014最新情報 tokyo_公開用 by
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
3.1K views57 slides
Osc2017 tokyo spring_soss_sig by
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigKazuki Omo
504 views28 slides

Similar to 文字コードに起因する脆弱性とその対策(増補版)(20)

今日こそわかる、安全なWebアプリの作り方2010 by Hiroshi Tokumaru
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
Hiroshi Tokumaru9.1K views
Webシステム脆弱性LT資料 by Tomohito Adachi
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
Tomohito Adachi1.1K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012 by Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru14.6K views
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察 by Ruo Ando
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察
複数のセキュアOSのセキュリティポリシー設定の自動生成のための構文主導変換方式の提案と考察
Ruo Ando400 views
Share pointを支えるsql server2014最新情報 tokyo_公開用 by Yukio Kumazawa
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
Yukio Kumazawa3.1K views
Osc2017 tokyo spring_soss_sig by Kazuki Omo
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sig
Kazuki Omo504 views
運用構築技術者の為のPSプログラミング第1回 by Shigeharu Yamaoka
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
Shigeharu Yamaoka1.9K views
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説 by Daisuke Nishino
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino4.3K views
20180901 community ws2019_share by Osamu Takazoe
20180901 community ws2019_share20180901 community ws2019_share
20180901 community ws2019_share
Osamu Takazoe421 views
なぜ自社で脆弱性診断を行うべきなのか by Sen Ueno
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
Sen Ueno15.7K views
アドテク×Scala×パフォーマンスチューニング by Yosuke Mizutani
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani14.4K views
MySQL 5.7 InnoDB 日本語全文検索 by yoyamasaki
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
yoyamasaki11.8K views
[デブサミ2012]趣味と実益の脆弱性発見 by Yosuke HASEGAWA
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
Yosuke HASEGAWA6.7K views
Springを利用したアプリケーションに対する テスト/セキュリティ対策の最新動向(2015) by Ko Umetani
Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015)Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015)
Springを利用したアプリケーションに対する テスト/セキュリティ対策の最新動向(2015)
Ko Umetani6.2K views
安全なPHPアプリケーションの作り方2013 by Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013
Hiroshi Tokumaru248.2K views
SQLインジェクション再考 by Hiroshi Tokumaru
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考
Hiroshi Tokumaru1.1K views
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン by Kazuyuki Miyake
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake5.5K views

More from Hiroshi Tokumaru

脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する by
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証するHiroshi Tokumaru
1.8K views27 slides
徳丸本VMに脆弱なWordPressを導入する by
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入するHiroshi Tokumaru
821 views8 slides
introduction to unsafe deserialization part1 by
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1Hiroshi Tokumaru
515 views19 slides
XXE、SSRF、安全でないデシリアライゼーション入門 by
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門Hiroshi Tokumaru
3.6K views48 slides
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題 by
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
27.3K views12 slides
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019) by
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)Hiroshi Tokumaru
9.6K views84 slides

More from Hiroshi Tokumaru(20)

脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する by Hiroshi Tokumaru
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
Hiroshi Tokumaru1.8K views
徳丸本VMに脆弱なWordPressを導入する by Hiroshi Tokumaru
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
Hiroshi Tokumaru821 views
introduction to unsafe deserialization part1 by Hiroshi Tokumaru
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
Hiroshi Tokumaru515 views
XXE、SSRF、安全でないデシリアライゼーション入門 by Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru3.6K views
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題 by Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru27.3K views
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019) by Hiroshi Tokumaru
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
Hiroshi Tokumaru9.6K views
Railsエンジニアのためのウェブセキュリティ入門 by Hiroshi Tokumaru
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
Hiroshi Tokumaru23.9K views
安全なWebアプリケーションの作り方2018 by Hiroshi Tokumaru
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
Hiroshi Tokumaru30.1K views
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう by Hiroshi Tokumaru
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
Hiroshi Tokumaru30.4K views
若手エンジニアのためのセキュリティ講座 by Hiroshi Tokumaru
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
Hiroshi Tokumaru31.8K views
ウェブセキュリティの常識 by Hiroshi Tokumaru
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識
Hiroshi Tokumaru31.4K views
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則 by Hiroshi Tokumaru
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru71.5K views
ウェブアプリケーションセキュリティ超入門 by Hiroshi Tokumaru
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru48.4K views
ウェブセキュリティの最近の話題早分かり by Hiroshi Tokumaru
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
Hiroshi Tokumaru71.5K views
セキュリティの都市伝説を暴く by Hiroshi Tokumaru
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Hiroshi Tokumaru87.2K views
セキュアコーディング方法論再構築の試み by Hiroshi Tokumaru
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
Hiroshi Tokumaru38.6K views
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編) by Hiroshi Tokumaru
 Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編) Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Hiroshi Tokumaru33K views
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか by Hiroshi Tokumaru
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
Hiroshi Tokumaru9.2K views

Recently uploaded

SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
380 views13 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
132 views64 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
151 views42 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
29 views38 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
90 views41 slides

Recently uploaded(12)

SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4380 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka90 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda453 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.76 views
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga25 views

文字コードに起因する脆弱性とその対策(増補版)