はスクリプトインジェクションがなくならない理由を紹介しました。それをふまえて今回はスクリプトインジェクションを防ぐ10のTipsを紹介します。 デフォルト文字エンコーディングを指定 php.iniには,PHPが生成した出力の文字エンコーディングをHTTPヘッダで指定するdefault_charsetオプションがあります。文字エンコーディングは必ずHTTPヘッダレベルで指定しなければなりません。...
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。 オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモ...
SQLインジェクション対策は非常に簡単です。しかしブラウザに対する「スクリプトインジェクション」はなかなか無くなりません。スクリプトインジェクションが無くならない10の理由をあげてみます。 複雑な攻撃経路と対策 前回紹介したように,ブラウザに対するスクリプトインジェクション攻撃の経路は3種類あります。エスケープ方法も数種類あります。すべての出力を完全...
前回の記事でSQLインジェクションの話は終わりにして,クロスサイトスクリプティングの話を書かせて頂こうと思っていました。しかし,6月5日に東京にて開催されたPostgreSQLカンファレンス2007でセキュリティをテーマに講演させて頂き,意外にブラインドSQLインジェクションをご存じでない方が沢山いらっしゃいました。40名ほどの聴講者の皆様にSQLインジェクションをご存じの...
」が開催されました。同カンファレンスは,今回で9回目を迎える,日本で最大規模のWebデベロッパーやWebデザイナーなどPHPユーザのためのイベントです。 基調講演 写真1 日本PHPユーザ会 廣川 類氏 基調講演を務めたのは,日本PHPユーザ会の廣川 類氏。「PHPの今とこれから 2008」と題し,PHPを取り巻く現状,技術的動向について述べました。 まず,現在のPHPの普及具合に触れ,Nex...
Six Apart本社に勤務し,Plaggerの作者でもある宮川達彦氏が,海外ではたらくことに関する様々なトピックをサンフランシスコからお届けします。 はじめMath! Javaでコンピュータ数学 プログラミング言語入門者向けに,知っていると役立つ数学的トピックスを紹介します。簡単な演習問題と解説で,即活用できる知識を目指します。 WSEA(Web Site Expert Academia) 株式会社関心空間代表取...
ではCakePHPを抽象的に紹介しました。今回はCakePHPのフレームワークとしての機能を具体的に紹介いたします。なお,紹介する機能は安定版の1.1系をもとにしています。 MVCモデル CakePHPの構造はWebアプリケーション開発で実績のあるMVCモデルを採用しています。MVCについての解説は少々長くなるのでここでは省略させていただきますが,非常にシンプルな構造なのですぐに理解できま...
今回はWebアプリケーションを作ったことがない方でも分かるようクロスサイトスクリプティング脆弱性を解説します。 クロスサイトスクリプティングとは? 初めてクロスサイトスクリプティングと聞いて,どのような問題なのかすぐに理解できる人はいないと思います。サイトAに記述されたJavaScriptプログラムがサイトB上で実行されるために発生することが問題とされたので,...
IT革命全盛期に創刊され,流行に左右されることなく「ソフトウェアは人がつくる」という開発の本質を追究した伝説の雑誌が,ポッドキャストで復活!! 毎月一人のゲストを迎え,SEの仕事に役立つ情報をお届けします。 検索エンジンを作る いまや誰もがコンピュータに向かって真っ先に使う「検索」。その検索を行う心臓部といえるのが検索エンジンです。既存の検索エンジン...
このようにサニタイズにより安全性を保証したつもりでも実際には安全になっていないケースは数多くあります。 $safe_text, $safer_textのサニタイズ処理はさらに別の問題も含んでいます。ereg_replaceはバイナリセーフではないので,ヌルバイト攻撃に脆弱です。このためヌル文字(\0)以降の文字列は正規表現による置換対象となりません。"<script>alert('XSS')</script>","javascript"...
CakePHPはオープンソースで開発されたPHP用のフレームワークです。Ruby on Railsの影響を強く受けており,Webアプリケーションを高速に開発するための仕掛けが随所に盛り込まれています。 PHP開発者の方で,Railsで開発してみたいけどRubyの経験がないのでなかなか行動に移せない方などはとくにCakePHPを試してみてほしいと思います。Railsの考え方を肌で理解しつつ,PHPでWebアプリケー...
YAML(YAML Ain't Markup Language)とは,データを構造化して表現するためのフォーマットです。目的はXMLと似ていますが,インデントを主体とした記法のため,XMLより読みやすく,書きやすく,わかりやすくなっています。 またデータシリアライゼーション(注1)に使えるように設計されているため,任意のデータ構造が表現できるだけの記述力を持っています。これは,基本的に木構...
PHP本体のバグはほかの言語(Perl,Ruby,Pythonなど)に比べ体感的に多いと思いませんか? 実際にPHP本体のセキュリティ問題は突出して多くレポートされています。今回はPHP本体にセキュリティ関連バグが多いとされる理由を考察してみます。 セーフモード(safe_mode)機能 safe_mode関連のバグは,PHP本体のセキュリティ問題として最も多くレポートされる問題です。しかし,実際に...
基本的な違いで困る場合もあります。その一例が新しい予約語です。PHP5はオブジェクト思考プログラミング機能が拡張されたため,abstract, public, private, protecedなどが予約語として追加されています。 最終回の「セキュリティ関連の違い」でも一部紹介しますが,PHP4はメンテナンスされているとはいえPHP5に比べて積極的にメンテナンスされてきませんでした。このため,セキュリ...
近年,システム開発を発注する顧客や利用ユーザーの品質に対する要求レベルは格段に向上しています。そのため,システムの品質を保証するための「テストフェーズ」はますます欠かせなくなってきています。 ここで,一口に「テスト」といっても,フェーズによって以下のような様々なテストがあります。 ユニットテスト・単体テスト 結合テスト・システムテスト 総合テス...
『 >>近年では,XPやTDDといった反復型の開発手法が一般的になってきていますが,それらの手法の重要な要素の1つに「テストの自動化」が挙げられています。PHPを使ったプロジェクトでも例外ではありません。本連載では,PHPU 』 by ringod
PHPのフレームワーク「CakePHP」は,Ruby on Railsの影響を強く受けており,Webアプリケーションを高速に開発するための仕掛けが随所に盛り込まれています。本連載では,このCakePHPを使ったWebアプリの開発方法について解説していきます。 児玉サヌールと田中ばびえの会社訪問 楽しそうなことをしてる会社はきっと楽しいはずだ。児玉サヌールと田中ばびえの2人が、楽しそうな会社...
アプリケーションの脆弱性を調べるには,CVEを参照するのが簡単です。 CVEとは,NISTが公開しているソフトウェアの脆弱性データベースです。脆弱性を一意に特定できるIDを付与することを目的としています。Webアプリケーションの脆弱性もCVEに登録されています。CVEに2006/12/31に登録されたアプリケーションの脆弱性の数(同じアプリケーションは除く)は次の通りでした。日によ...