owaspとproactive controls 2016のご紹介

Post on 19-Mar-2017

804 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OWASPProactive Controls 2016 のご紹介 2016/3/30 Gotanda.pm@mahoyaya

@mahoyaya

Name: Daiki Ichinose Work : NW インフラ (?) Favorite: DIY Twitter: @mahoyaya blog: http://mahoyaya.hateblo.jp GitHub: https://github.com/mahoyaya Other:

OWASP Japan プロモーションチーム JOIN ⇐ NEW

質問OWASP 知っていますか???

What is OWASP?

OWASP は安全なソフトウェアの設計・開発・習 得・運用と維持に関する活動を支援する、非営利の団体。OWASP のツールやトキュメ ントなと、すへての成果物は無料て利用可能。

国際的なコミュニティ

日本ては? OWASP Japan 2012.3 OWASP Kansai 2014.3 OWASP Kyushu 2015.3 OWASP Sendai ⇐ NEW OWASP Fukushima ⇐ NEW OWASP Okinawa ⇐ NEWOWASP Night や OWASP DAY といった定期的な勉強会を実施しています。

とんなプロジェクトがあるの?現時点で 100以上の成果物が公開されています

https://www.owasp.org/index.php/Category:OWASP_Project

OWASP の成果物を利用しよう!

日本独自の成果物

プロモーションチーム松本さん主催の勉強会

https://security-testing.doorkeeper.jp

脆弱性診断ツール OWASP ZAP の使い方も教えてくれます

直近の開催予定

https://security-testing.doorkeeper.jp

OWASP Proactive Controls 2016 日本語版リリース!!

https://www.owasp.org/images/a/a8/OWASPTop10ProactiveControls2016-Japanese.pdf

Proactive Controls 2016 の紹介

PROACTIVE CONTROLS とは?

Proactive Controls 2016 て列挙しているセキュリティ概念は、すへてのソフトウェア開発プロジェクトて考慮しなけれはならないもの

すへてのソフ トウェア開発プロジェクトて考慮しなけれはならないもの 1. 早期に、繰り返しセキュリティを検証する 2. クエリーのハラメータ化 3. テータのエンコーティンク 4. すへての入力値を検証する 5. アイテンティティと認証管理の実装 6. 適切なアクセス制御の実装 7. テータの保護 8. ロキンクと侵入検知の実装 9. セキュリティフレームワークやライフラリの活用 10. エラー処理と例外処理

今日はここ

1. 早期に、繰り返しセキュリティを検証する

「早期に、繰り返しセキュリティを検証」とは、脆弱性の検査を開発プロセスの中て繰り返し行うへきてあるということ。

2. クエリーのハラメータ化“ 静的”プレースホルダを使うへきてあるということ抜粋:SQL インジェクションを防ぐには、信頼てきない入力値が SQL コマントの一部として解釈されるのを避ける必要があります。最も良い方法は「クエリーのハラメータ化」と呼はれる実装方法てす。この方法ては、 SQL の問い合わせ構文とハラメータは、それぞれ別々にテータベースサーバーに送信され、テータベース上て解析されます。※ 構文とハラメータが別々に DB へ送信されるのは静的プレースホルダのみ

なぜ静的てある必要があるのか?

動的プレースホルダ(俗にいうクライアントサイト・プリペアートステートメント)は、呼び出し側て SQL を構文解析するため、 API 仕様として構文解析が適切てなかった場合に問題が発生する可能性を秘めている。これに対して静的プレースホルダは、テータベースサーバ上て構文を「確定」させてからハラメータを挿入するため、理論上インジェクションの余地が無い。

具体的にとうするの?抜粋:Rails 、 Django 、 Node.js といったフレームワークては、テータベースとのやりとりには OR モ テル (Object-Relational モテル ) が採用されています。 OR モテルを採用しているこれらのフ レームワークては、テータの参照や更新の際には自動的にクエリーのハラメータ化が行わ れています。しかし、 OQL や HQL といったオフジェクトクエリーにユーサーからの入力値を 用いる場合は注意が必要てす。これ以外にもフレームワークがサホートしている形式があ れは、同様に注意する必要があります。

( ゚ д ゚ ) Perl は?

Perl+MySQL をゆるふわに静的にしてみたmy $dbh = DBI->connect( 'DBI:mysql:database=xxx;host=xxx;mysql_server_prepare=1;mysql_enable_utf8=1', 'xxxx', 'xxxx');if (! $dbh) { is_error(); } my $sql = "INSERT INTO foo (bar, baz) VALUES ( ?, ? )";my $sth = $dbh->prepare( $sql );$sth->execute( $bar, $baz );

ても、 DBI をそのままて使わないよね

俺達の Aniki

my $db = MyProj::DB->new(connect_info => ["dbi:mysql:dbname=mydb;host=$dbhost;port=$dbport:mysql_server_prepare=1;mysql_use_utf8=1;", “user", “pass"]);

システム要件を加味した上て、可能な限り”静的”プレースホルダを使いましょう

ありがとうございましたWEBをたしかなものに

top related