SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
ウェブアプリのセキュリティをちゃんと知ろう PHP でやるお (^ω^)
基本的な考え方 脆弱性とは何か 対策ではなく、原理を知る バグは必ずある 入力、処理、出力の仕様を明確化する
脆弱性って何? 脆弱性とは「バグ」です。 正確には、「第三者」が「ウェブサイト利用者」や「ウェブサイト運営者」に対して悪用することが可能になる「バグ」です 本来、「セキュリティ対策」という特別な作業がある訳ではない 普通に「バグ」のないプログラムを書くことが、「セキュリティ対策」
対策ではなく、原理を知ろう 「バグ」を直すには、「バグ」が起こる原理を知らなければならない 「バグ」を直す魔法などない
バグは必ずある とはいえ、バグを作らない人はいません 過去、現在、未来、僕たちの作ったプログラムには必ずバグがある もちろん、バグを作らない努力は最大限行うべき 気が付いたり、指摘されたら、すぐに直すことこそが一番重要
入力、処理、出力の仕様を明確化する バグとは仕様を守らないこと ウェブアプリは非常に複雑 仕様も複雑、バグも作りやすい 細かい単位(入力、処理、出力)で、仕様を明確にし、バグの出現箇所から原因をすぐに特定できるようにする
ウェブアプリの入力、処理、出力 入出力 ウェブサーバ ウェブアプリ (PHP など) 外部 API サーバ (Facebook API 、決済会社など) 入出力 処理 入出力 データベースサーバ (MySQL など) ウェブブラウザ
ウェブアプリの入力、処理、出力 ちゃんと仕様を答えられるようにしよう 入出力の仕様 ウェブサーバーを通したウェブブラウザとの入出力の仕様 データベースサーバーとの入出力の仕様 外部 API サーバーとの入出力の仕様 その他さまざまな機器や、サーバーとの入出力の仕様 処理の仕様 ウェブアプリの処理の仕様 ライブラリやフレームワークが行う処理の仕様
今日は以下の仕様について考えてみよう ウェブサーバーを通したウェブブラウザからの入力の仕様 ウェブサーバーを通したウェブブラウザへの出力の仕様 データベースサーバーへの出力の仕様 どのようなリクエストを処理すべきか?という仕様を考えよう
ウェブサーバーを通したウェブブラウザからの入力の仕様を考えよう PHP に入ってくる値は何かを知る 可変長のバイト列 (文字列ではない!!) GET パラメータ POST パラメータ アップロードファイル リクエストヘッダ (Cookie など) 実際の処理に渡すべき値は何かを考える 文字列か、バイト列か?文字コードは何か? (ウェブサーバーでバイト列を処理することってあまりないので、 PHP では基本的に文字コードのバリデーションは必要だと思って良い) 長さはどうか? どういう文法や構造を持つデータ? 入力された値を実際の処理に渡すべき値かどうかを確認することを「バリデーション」という
GET パラメータのバリデーション # PHP に入ってくる可能性があるのは可変長のバイト列 $url = $_GET['url']; if (!mb_check_encoding($url, 'UTF-8'))  throw new Exception('文字列ではない'); # この時点で $urlは UTF-8 でエンコーディングされた文字列ということが保証される $url_length = mb_strlen($url, 'UTF-8'); if ($url_length > 512)  throw new Exception('文字列が長すぎる'); # この時点で $urlは UTF-8 でエンコーディングされた 512 文字以下の文字列ということが保証される if (!preg_match('/s?https?:[-_.!~*'()a-zA-Z0-9;?:@&=+$,%#]+/u', $url))  throw new Exception('URL として不正'); # この時点で $urlは Http URL であることが保証される $url_info = parse_url($url); if ($url_info['host'] !== 'ohma-inc.com')  throw Exception('外部サイトの URL'); # この時点で $urlは ohma-inc.com の Http URL であることが保証される
アップロードファイルのバリデーション if (!$_FILES['file'])  throw new Exception('ファイルがアップロードされなかった'); $file = $_FILE['file']; # この時点でmulipart/form-data によって file というパラメタ名で # ファイルが送信されたことが保証される if (!is_uploaded_file($file['tmp_name']) or $file['error'] !== 0)   throw new Exception('アップロードエラー'); $filename = $file['tmp_name']; # この時点で $filename は HTTP_POST によって送信されたファイルを # 一時保存しているファイルのパスであり、 php.ini に設定された # アップロードファイルのファイルサイズ以内であることが保証される $info = getimagesize($filename); if (!$info or !isset($info['mime']) or $info['mime'] === 'image/gif')  throw new Exception('アップロードされたファイルが GIF じゃない'); # この時点で $filename は HTTP_POST によって送信されたファイルを # 一時保存しているファイルのパスであり、 php.ini に設定された # アップロードファイルのファイルサイズ以内であり # GIF のマジックバイトを持つことが保証される
ウェブサーバーを通したウェブブラウザへの出力の仕様を考えよう ブラウザへ渡すべき値は何かを考える 文字列なのか、バイト列なのか?文字コードは何? (動的に画像を生成するような場合以外は、だいたい文字列を出力することが多いよね) 出力するデータの、文法やデータ構造は? (MIME タイプは何?) ブラウザが正しく文法やデータ構造、文字コードを理解し処理できるには何が必要? X-Content-Type-Options: nosniff を送ったうえで、Content-Type は正しく遅れているか 文法やデータ構造を守った文字列やバイト列を生成するにはどうしたらいいか 文法やデータ構造を正しく出力するための手法 シリアライズ、エスケープ テンプレートに埋め込む場合に重要なことは、文法をまたがらず、たった一つのリテラルのみを作ること XSS は、正しく HTML や JavaScript を生成出来ていない場合や、ブラウザに正しく Content-type や文字コードを伝えられていない場合などに発生する
php apache の設定 HTML に正しくコンテンツを認識させる header('Content-Type: text/html; charset=utf-8'); header('X-Content-Type-Options: nosniff'); header('Content-Type: application/json; charset=utf-8'); header('X-Content-Type-Options: nosniff'); AddDefaultCharset utf-8 Header set X-Content-Type-Options nosniff
正しいデータを生成する1 ダメな例 例えば $data = "quot;><script>alert(1)</script><a href=quot;"; ... <a href="/search?q=<?= $data ?>"></a> ...
正しいデータを生成する1 $data JS 文字列 URL Component CSS 識別子 JS  識別子 CDATA PCDATA PCDATA PCDATA RCDATA htmlspecialchars(rawurlencode($data), ENT_QUOTES, 'UTF-8')
正しいデータを生成する1 正しい例 ... <a href="/search?q=<?= htmlspecialchars(rawurlencode($data), ENT_QUOTES, 'UTF-8') ?>"></a> ...
ダメな例 正しいデータを生成する2 ... <script> var data = "<?= $data ?>"; ...
正しいデータを生成する2 $data JS 文字列 URL Component CSS 識別子 JS  識別子 CDATA PCDATA PCDATA PCDATA RCDATA preg_replace('/</u', 'u003cu002f', json_encode($data))
正しい例 正しいデータを生成する2 ... <script> var data = <?= preg_replace('/</u', 'u003cu002f', json_encode($data)); ?>; if (typeof(data) !== 'string') throw Error('文字列じゃない!'); ...
ダメな例 正しいデータを生成する3 ... <a onclick="var data = '<?= $data ?>'; ... ...
正しいデータを生成する3 $data JS 文字列 CSS 識別子 JS  識別子 CDATA PCDATA PCDATA PCDATA RCDATA htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
正しい例 正しいデータを生成する3 ... <a onclick="var data = <?= htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8'); ?>; if (typeof(data) !== 'string') throw Error('文字列じゃない!');... ...
正しいデータを生成する(まとめ) 正しいデータを生成するって大変だよね 関数名や、関数パラメータも長いよね 間違いの元だよね なので、フレームワークやライブラリを積極的に活用しよう
データベースサーバーへの出力の仕様を考えよう データベースへ渡すべき値 SQL SQL を正しく生成するには? プリペアードステートメントを使う 別の言い方すると、値の埋め込みにはプレースホルダを使う 正しい SQL を生成できない = SQL インジェクションが発生する
ダメな例 (正しくない SQL が生成される可能性がある) 正しい例 ( "?" がプレースホルダ) 正しい SQL を生成する $db->execute('SELECT name FROM member WHERE member_id = "' . $member_id . '"'); $stmt= $db->prepare('SELECT name FROM member WHERE member_id = ?'); $stmt->bind_param($member_id); $stmt->execute();
どのようなリクエストを処理すべきか?という仕様を考えよう リクエストされる状況にはどんなものがあるかを考える script の src属性に埋め込まれる imgの src属性に埋め込まれる XMLHttpRequestによる呼び出し 意図しないクリック 意図したクリック リクエストに対して、処理をすべきかを考える 自サイトからリクエストされたか GET か POST か XMLHttpRequestからリクエストされたか CSRF はここの仕様バグによっておこる
自サイトからリクエストされたことを保証する リクエスト元で 予測不可能なトークンを cookie や session に埋め込む 同じトークンをフォームに埋め込み POST する リクエスト先で cookie や session からトークンを読み込んで、 POST されたトークンと同じ値かどうかを確認する
リクエスト元 リクエスト先 自サイトからリクエストされたことを保証する $token = base64_encode(openssl_random_pseudo_bytes(64)); setcookie('csrf_token', $token); ... <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($token, ENT_QUOTES, 'UTF-8'); ?>"> ... if ($_POST['csrf_token'] !== $_COOKIE['csrf_token']) throw new Exception('想定外');
毎回これを書くのも大変なので、フレームワークやライブラリを活用しましょう。 自サイトからリクエストされたことを保証する
正しくサイトを作るって 難しいよね

Contenu connexe

Tendances

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019Rui Hirokawa
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011Rui Hirokawa
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2Akio Ishida
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたYoshio Hanawa
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介sters
 
Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策iPride Co., Ltd.
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発Shinzo SAITO
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020Rui Hirokawa
 
System2 for h
System2 for hSystem2 for h
System2 for hJun Chiba
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 

Tendances (20)

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
Perl logging
Perl loggingPerl logging
Perl logging
 
PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
System2 for h
System2 for hSystem2 for h
System2 for h
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 

En vedette

トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御Takashi Hoshino
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networksShuhei Iitsuka
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)ひとし あまの
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowlerTakuro Sasaki
 
Innovation eggcloudnative
Innovation eggcloudnativeInnovation eggcloudnative
Innovation eggcloudnativeTakuro Sasaki
 
Lambda認証認可パターン
Lambda認証認可パターンLambda認証認可パターン
Lambda認証認可パターンTakuro Sasaki
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016Hiroshi Tokumaru
 
Webセキュリティと W3CとIETFの仕様
Webセキュリティと W3CとIETFの仕様Webセキュリティと W3CとIETFの仕様
Webセキュリティと W3CとIETFの仕様yuki-f
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みRyo Mitoma
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践Preferred Networks
 

En vedette (14)

Android WearとXXXX
Android WearとXXXXAndroid WearとXXXX
Android WearとXXXX
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowler
 
Innovation eggcloudnative
Innovation eggcloudnativeInnovation eggcloudnative
Innovation eggcloudnative
 
Lambda認証認可パターン
Lambda認証認可パターンLambda認証認可パターン
Lambda認証認可パターン
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
 
Webセキュリティと W3CとIETFの仕様
Webセキュリティと W3CとIETFの仕様Webセキュリティと W3CとIETFの仕様
Webセキュリティと W3CとIETFの仕様
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組み
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践
 

Similaire à ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)

徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011Hiroshi Tokumaru
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術ina job
 
System insert hint_h
System insert hint_hSystem insert hint_h
System insert hint_hJun Chiba
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見Yosuke HASEGAWA
 
ぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Appsぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS AppsEnsekiTT
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talkmitamex4u
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
AppExchangeパートナー&デベロッパー第2部:20070523版
AppExchangeパートナー&デベロッパー第2部:20070523版AppExchangeパートナー&デベロッパー第2部:20070523版
AppExchangeパートナー&デベロッパー第2部:20070523版Junichiro Tasaki
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 
WordPressで始めるphp入門
WordPressで始めるphp入門WordPressで始めるphp入門
WordPressで始めるphp入門Hiroaki Murayama
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winterShogo Sensui
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Socialngi group.
 
お父さんのための実用JavaScriptプログラミング~入門篇~
お父さんのための実用JavaScriptプログラミング~入門篇~お父さんのための実用JavaScriptプログラミング~入門篇~
お父さんのための実用JavaScriptプログラミング~入門篇~Che Renkov
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用stomita
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolistShinichiro Kumeuchi
 
第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjaxKensaku Komatsu
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテストTomonori Yamada
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 

Similaire à ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料) (20)

徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術
 
System insert hint_h
System insert hint_hSystem insert hint_h
System insert hint_h
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
ぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Appsぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Apps
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
AppExchangeパートナー&デベロッパー第2部:20070523版
AppExchangeパートナー&デベロッパー第2部:20070523版AppExchangeパートナー&デベロッパー第2部:20070523版
AppExchangeパートナー&デベロッパー第2部:20070523版
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 
WordPressで始めるphp入門
WordPressで始めるphp入門WordPressで始めるphp入門
WordPressで始めるphp入門
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winter
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
お父さんのための実用JavaScriptプログラミング~入門篇~
お父さんのための実用JavaScriptプログラミング~入門篇~お父さんのための実用JavaScriptプログラミング~入門篇~
お父さんのための実用JavaScriptプログラミング~入門篇~
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolist
 
第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 

Dernier

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (7)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)