SlideShare a Scribd company logo
NanoA a minimalist approach to WAF Cybozu Labs, Inc. Kazuho Oku
自己紹介 サイボウズ・ラボ所属 ラボで作ったもの Japanize, Pathtraq, Q4M, … 使用言語 C/C++, Perl, JavaScript, … 半分はミドルウェア屋さん パートタイム  Perl  デベロッパ パートタイム  WebApp  デベロッパ
今日の  Perl WAF  は複雑  ( のようだ ) プロ向けのツールとして発展してきた経緯 屋上屋を重ねすぎ 覚えることが多すぎる 情報がどこにあるかわからない パートタイムデベロッパーにはつらい ミドルウェア屋さんとか 研究屋さんとか 自営業の方とか
WAF  の余計な要素 ディスパッチテーブル ファイルパスを使えばいいじゃん テンプレートのエスケープ指示 テンプレートエンジンで自動処理できるはず コントローラとテンプレートの分離 We ♥ PHP! 設定ファイル Convention over Configuration
WAF  の余計な要素  (2) mod_perl  ( fastcgi)  が必須 CGI  でも動いてほしい CGI  で十分なケースも多い 例 : Japanize CPAN  モジュールへの依存 インストールが面倒 環境依存は悪
NanoA  の特徴 インストーラ ディスパッチテーブルレス コンポーネント指向 View  と  Controller  が可換 フォーム生成/バリデータが付属 CGI  で ( も ) 高速 Simple but Powerful モジュールは  MENTA  と共有
インストーラ CGI  1ファイルのみ 自己展開して  suEXEC  環境なら自動設定 デモ
コンポーネント指向 サービス開発時はアプレット「だけ」書く 設定は複数のアプレットで共有 例 :  ユーザー管理コンポーネント ,  設定コンポーネント , … という風にしたいけどコンポーネント書いてない UI  の制限がない  XOOPS
View  と  Controller  が可換 View  と  Controller  が同一の  API  をもつ PHP  スタイルのコーディングも可能 ちょっとしたアプリケーションには便利 双方向にインクルード可能 View  から  Controller  を呼び出したり Controller  から  View  を呼び出したり デモ
フォーム生成/バリデータ 基本的な項目が指定可能 required, min_length, max_length, regexp, email, # of choices, … CSRF  対策が組み込み
NanoA  のディレクトリ構成 app/MyApp/start.pm  を書くだけで動きます nanoa/   nanoa.cgi   app/    app1/     start.pm        -- app1  のトップページ    app2/     config.pm       -- app2  の全体設定     start.pm        -- app2  のトップページ     controller1.pm    --  別のコントローラ      template/       --  テンプレートディレクトリ      start.mt      controller.mt
例 :  掲示板 http: //kazuho .31tools. com/nanoa/nanoa . cgi/tinybbs/
NanoA  の今後 たぶん  MENTA  よりも思想性重視 機能的な部分は  MENTA  を  svn externals 自作サービスでは使うつもり Japanize? アプレット開発者絶賛募集中 nanoa/trunk/app  下に置いてほしい Nanoa  と一緒に配布します NanoA  をよろしくお願いします

More Related Content

KEY
最強のPHP統合開発環境 PHPStorm
PDF
フレームワークを使うべき 3 つの理由
PDF
PHPデプロイツールの世界
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PDF
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PPT
Puppet Best Practices? at COOKPAD
PDF
Word pressのテーマは firephpでハックすれば 良かったのか
PPTX
Open Source System Administration Framework - Func
最強のPHP統合開発環境 PHPStorm
フレームワークを使うべき 3 つの理由
PHPデプロイツールの世界
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
Puppet Best Practices? at COOKPAD
Word pressのテーマは firephpでハックすれば 良かったのか
Open Source System Administration Framework - Func

What's hot (20)

PDF
Behatで行う、E2Eテスト入門
PPTX
今日から始めるLaravel
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
PDF
いまどきのPHP開発現場 -2015年秋-
PDF
恋に落ちるデプロイツール
KEY
Behat+Symfony2ではじめるBDD超入門
PDF
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
PDF
PHPとJavaScriptの噺
PPTX
Behat Driven Development
PDF
AspectMock 最強のモッキングフレームワーク
PDF
Javaで1から10まで書いた話(sanitized)
PDF
はじめてLaravelさわった 第86回php勉強会
PPTX
明日から始める Chef 入門 #bpstudy
PDF
Laravel 5.1 LTSでサービスを作る
PPTX
PHPで並列処理する ライブラリを作った
PDF
Ansible入門
PDF
Maven基礎
PDF
NorikraのJVMチューンで苦労している話
PDF
Laravel5を使って開発してみた
PPTX
活動報告9 laravel5入門-
Behatで行う、E2Eテスト入門
今日から始めるLaravel
PHP x AWS でスケーラブルなシステムをつくろう
いまどきのPHP開発現場 -2015年秋-
恋に落ちるデプロイツール
Behat+Symfony2ではじめるBDD超入門
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
PHPとJavaScriptの噺
Behat Driven Development
AspectMock 最強のモッキングフレームワーク
Javaで1から10まで書いた話(sanitized)
はじめてLaravelさわった 第86回php勉強会
明日から始める Chef 入門 #bpstudy
Laravel 5.1 LTSでサービスを作る
PHPで並列処理する ライブラリを作った
Ansible入門
Maven基礎
NorikraのJVMチューンで苦労している話
Laravel5を使って開発してみた
活動報告9 laravel5入門-
Ad

Viewers also liked (20)

PPT
Political Cartooningtoputonblog
PPT
Croatian christmas carols
PDF
Standardisierte Medizinische Übergaben - Wie lernen, lehren und implementiere...
PDF
Persuasion Engineering - Training handout المادة التدريبية لدورة هندسة الإقناع
PPTX
Infrastructure of Pathtraq
PPT
Przenosiny
PPT
Unit 1.3 Introduction to Programming (Part 3)
PPTX
Lyddie: Unit2 lesson2
PPTX
Lyddie: Unit2 lesson1
PDF
Электронные журналы для планшетов. Новые возможности в Magtoapp Editor 1.42
PDF
Perspectivas de la comunicación 2016
PDF
Antropologia dźwięku. Foniczne reprezentacje kultur.
PDF
Generazione 1000 €
PPTX
Slavery Module: Lesson thirteen
PDF
How Recommender Systems in Technology-Enhanced Learning depend on Context
PDF
Group Concpet Mapping Learning Analytics @ LASI Amsterdam
PDF
Socialist Software Development - RubyConf 2010
PPTX
A Long Walk to Water: Lesson4 unit2
PPTX
Shandy Engaging The Social Media
PPT
Unit 1.3 Introduction to Programming (Part 1)
Political Cartooningtoputonblog
Croatian christmas carols
Standardisierte Medizinische Übergaben - Wie lernen, lehren und implementiere...
Persuasion Engineering - Training handout المادة التدريبية لدورة هندسة الإقناع
Infrastructure of Pathtraq
Przenosiny
Unit 1.3 Introduction to Programming (Part 3)
Lyddie: Unit2 lesson2
Lyddie: Unit2 lesson1
Электронные журналы для планшетов. Новые возможности в Magtoapp Editor 1.42
Perspectivas de la comunicación 2016
Antropologia dźwięku. Foniczne reprezentacje kultur.
Generazione 1000 €
Slavery Module: Lesson thirteen
How Recommender Systems in Technology-Enhanced Learning depend on Context
Group Concpet Mapping Learning Analytics @ LASI Amsterdam
Socialist Software Development - RubyConf 2010
A Long Walk to Water: Lesson4 unit2
Shandy Engaging The Social Media
Unit 1.3 Introduction to Programming (Part 1)
Ad

Similar to NanoA (20)

PPTX
NAO/Pepper 開発環境 について
PDF
クラウド開発に役立つ OSS あれこれ
PPT
2009 PHP初心者
PDF
Web技術勉強会 第33回
PDF
ゲームのインフラをAwsで実戦tips全て見せます
PDF
Cakephp
PDF
PhoneGap勉強会 - 実践編 -
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
PPT
Apache Module
ODP
PHP With Windows binary
PDF
How to run P4 BMv2
PDF
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
PDF
Cloud Foundry構成概要 111018
PDF
WTM53 phpフレームワーク いまさらcodeigniter
PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
PDF
FuelPHP活用事例
PPTX
Cloudstack user group meeting in osaka
PDF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
PPTX
Windows Azure PHP Tips
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
NAO/Pepper 開発環境 について
クラウド開発に役立つ OSS あれこれ
2009 PHP初心者
Web技術勉強会 第33回
ゲームのインフラをAwsで実戦tips全て見せます
Cakephp
PhoneGap勉強会 - 実践編 -
PHP で実行中のスクリプトの動作を下から覗き見る
Apache Module
PHP With Windows binary
How to run P4 BMv2
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Cloud Foundry構成概要 111018
WTM53 phpフレームワーク いまさらcodeigniter
Ansibleはじめよぉ -Infrastructure as Codeを理解-
FuelPHP活用事例
Cloudstack user group meeting in osaka
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Windows Azure PHP Tips
最新PHP事情 (2000年7月22日,PHPカンファレンス)

More from Kazuho Oku (20)

PDF
HTTP/2で 速くなるとき ならないとき
PDF
QUIC標準化動向 〜2017/7
PDF
HTTP/2の課題と将来
PDF
TLS 1.3 と 0-RTT のこわ〜い話
PDF
Reorganizing Website Architecture for HTTP/2 and Beyond
PPTX
Recent Advances in HTTP, controlling them using ruby
PPTX
Programming TCP for responsiveness
PDF
Programming TCP for responsiveness
PDF
Developing the fastest HTTP/2 server
PPTX
TLS & LURK @ IETF 95
PPTX
HTTPとサーバ技術の最新動向
PPTX
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
PPTX
Cache aware-server-push in H2O version 1.5
PDF
HTTP/2時代のウェブサイト設計
PDF
H2O - making the Web faster
PDF
H2O - making HTTP better
PDF
H2O - the optimized HTTP server
PPTX
JSON SQL Injection and the Lessons Learned
PPTX
JSX 速さの秘密 - 高速なJavaScriptを書く方法
PPTX
JSX の現在と未来 - Oct 26 2013
HTTP/2で 速くなるとき ならないとき
QUIC標準化動向 〜2017/7
HTTP/2の課題と将来
TLS 1.3 と 0-RTT のこわ〜い話
Reorganizing Website Architecture for HTTP/2 and Beyond
Recent Advances in HTTP, controlling them using ruby
Programming TCP for responsiveness
Programming TCP for responsiveness
Developing the fastest HTTP/2 server
TLS & LURK @ IETF 95
HTTPとサーバ技術の最新動向
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
Cache aware-server-push in H2O version 1.5
HTTP/2時代のウェブサイト設計
H2O - making the Web faster
H2O - making HTTP better
H2O - the optimized HTTP server
JSON SQL Injection and the Lessons Learned
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX の現在と未来 - Oct 26 2013

NanoA

  • 1. NanoA a minimalist approach to WAF Cybozu Labs, Inc. Kazuho Oku
  • 2. 自己紹介 サイボウズ・ラボ所属 ラボで作ったもの Japanize, Pathtraq, Q4M, … 使用言語 C/C++, Perl, JavaScript, … 半分はミドルウェア屋さん パートタイム Perl デベロッパ パートタイム WebApp デベロッパ
  • 3. 今日の Perl WAF は複雑 ( のようだ ) プロ向けのツールとして発展してきた経緯 屋上屋を重ねすぎ 覚えることが多すぎる 情報がどこにあるかわからない パートタイムデベロッパーにはつらい ミドルウェア屋さんとか 研究屋さんとか 自営業の方とか
  • 4. WAF の余計な要素 ディスパッチテーブル ファイルパスを使えばいいじゃん テンプレートのエスケープ指示 テンプレートエンジンで自動処理できるはず コントローラとテンプレートの分離 We ♥ PHP! 設定ファイル Convention over Configuration
  • 5. WAF の余計な要素 (2) mod_perl ( fastcgi) が必須 CGI でも動いてほしい CGI で十分なケースも多い 例 : Japanize CPAN モジュールへの依存 インストールが面倒 環境依存は悪
  • 6. NanoA の特徴 インストーラ ディスパッチテーブルレス コンポーネント指向 View と Controller が可換 フォーム生成/バリデータが付属 CGI で ( も ) 高速 Simple but Powerful モジュールは MENTA と共有
  • 7. インストーラ CGI 1ファイルのみ 自己展開して suEXEC 環境なら自動設定 デモ
  • 8. コンポーネント指向 サービス開発時はアプレット「だけ」書く 設定は複数のアプレットで共有 例 : ユーザー管理コンポーネント , 設定コンポーネント , … という風にしたいけどコンポーネント書いてない UI の制限がない XOOPS
  • 9. View と Controller が可換 View と Controller が同一の API をもつ PHP スタイルのコーディングも可能 ちょっとしたアプリケーションには便利 双方向にインクルード可能 View から Controller を呼び出したり Controller から View を呼び出したり デモ
  • 10. フォーム生成/バリデータ 基本的な項目が指定可能 required, min_length, max_length, regexp, email, # of choices, … CSRF 対策が組み込み
  • 11. NanoA のディレクトリ構成 app/MyApp/start.pm を書くだけで動きます nanoa/   nanoa.cgi   app/    app1/     start.pm        -- app1 のトップページ    app2/     config.pm       -- app2 の全体設定     start.pm        -- app2 のトップページ     controller1.pm    -- 別のコントローラ     template/       -- テンプレートディレクトリ      start.mt      controller.mt
  • 12. 例 : 掲示板 http: //kazuho .31tools. com/nanoa/nanoa . cgi/tinybbs/
  • 13. NanoA の今後 たぶん MENTA よりも思想性重視 機能的な部分は MENTA を svn externals 自作サービスでは使うつもり Japanize? アプレット開発者絶賛募集中 nanoa/trunk/app 下に置いてほしい Nanoa と一緒に配布します NanoA をよろしくお願いします