たまたま目に止まったブログがあるので紹介します。 PHP:session_set_save_handlerリファレンスマニュアルのサンプルにパス・トラバーサル脆弱性 http://www.tokumaru.org/d/20080818.html#p01 [php]session_set_save_handlerのパストラバーサルで任意コマンドの実行が可能 http://www.tokumaru.org/d/20080819.html#p01 この危険性はStrict Sessionパッチが作られた頃にも議論されていました。このパッチを摘要するとセッシ...
Webサービスのユーザー情報のテーブルにクレジットカードなどの流出したら困る情報を保存するのはとても怖いことです。 そんな情報は保存しないことが望ましいわけですが、ビジネス的な事情でカード情報を保存せざるを得ないケースも当然あります。 少なくともWEBサーバから直結してるサーバーに、そんな情報は置きたくないところで、最低限カード情報サーバは裏側に専用...
Webアプリケーションは、ブラウザ上で動作するという制約から、想定外のページ遷移が頻繁に発生します。これを「不正遷移」と呼びます。不正遷移とその制御を理解することが、Webアプリ開発者には不可欠です。 本稿では、不正遷移の種類とその対策を紹介します。 おことわり 本稿で使われている用語は、一般的なものとは限りません。また、紹介している対策以外に...
『 セキュリティについて。読んでおく 』
PHPはスクリプト言語であるため、PHPでアプリケーションを作成して配布すると、「オープンソースとして公開する/しない」という意図にかかわらず、ソースコードが読める状態になってしまいます。しかし、商用製品などでは、クライアントにソースコードを公開したくない場合もあるでしょう。今回は、PHPのソースコードをバイナリ/難読/暗号化する「Zend Guard」を紹介し...
SQLインジェクション対策は非常に簡単です。しかしブラウザに対する「スクリプトインジェクション」はなかなか無くなりません。スクリプトインジェクションが無くならない10の理由をあげてみます。 複雑な攻撃経路と対策 前回紹介したように,ブラウザに対するスクリプトインジェクション攻撃の経路は3種類あります。エスケープ方法も数種類あります。すべての出力を完全...
『 WEBプログラマとしては知っておかなければいけないセキュリティいろいろ 』
CakePHPでCSRF対策を行う方法です。 フレームワークに含まれているSecurityコンポーネントを使います。 Security#requestAuth()にアクションを記述しておくと、アクショ...
ここで、「'No.' や '題名:' や '名前:' や '日時:' の定数文字列まで htmlspecialchars に通すなんて無駄じゃないか」などということを考えては いけない。いまどき、そんな貧民的プログラミング思考をするのは プログラム職人として恥ずかしいことだ。 元々、HTMLを出力するときは、その出力全体に対して「<」「>」「&」のエス ケープ処理の検討が要求されているのであって、CGI入力...
前回の記事でSQLインジェクションの話は終わりにして,クロスサイトスクリプティングの話を書かせて頂こうと思っていました。しかし,6月5日に東京にて開催されたPostgreSQLカンファレンス2007でセキュリティをテーマに講演させて頂き,意外にブラインドSQLインジェクションをご存じでない方が沢山いらっしゃいました。40名ほどの聴講者の皆様にSQLインジェクションをご存じの...
問題:以下のコードはセキュリティ上大きな問題となる脆弱な処理が含まれています。セキュリティ上のベストプラクティス、他の自動ログインの実装方法と比較し、以下のコードの脆弱性を詳しく述べよ。 if (serendipity_authenticate_author($serendipity['POST']['user'], $serendipity['POST']['pass'], false, $use_external)) { if (empty($serendipity['POST']['auto'])) { serendipity_deleteCookie('author_information'); return false; } els...
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。 オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモ...
見た目にインパクトが大きいAjax利用のWebアプリケーション。しかし、その見た目を支える要となるものは、背後にある有益な情報処理と活用方法だ。Ajaxのインパクトに負けないWebアプリはどのように作られるのか? 2006年08月25日 08時00分 更新 このオンライン・ムックPlus「Web 2.0で変わるWebプログラミングの常識」では、これまでにAjaxの概要(第1回)から発展系としてどのような...
XMLHttpRequestはページの一部分に適用されるべきで、ページ遷移にまで適用してしまうとWebが本来持っているインタラクション(戻るボタン、ブックマークなど)を阻害してしまう、という理由。 これはパーマリンクの概念にも通じるところがある。なお、ここではこの法則を犯している例としてGoogle Mapsが挙げられているが、当該サイトはパーマリンクを動的に作成しているのでそこ...
昨日の日記で、DK祭りで使われている脆弱性がXSSかCSRFかという問題になった。どうも、XSSとCSRFがごっちゃになっている人もいるように見受けるので、簡単な整理を試みたい。 XSSとCSRFには似た点がある。 どちらも「クロスサイト」という言葉が先頭につく なりすましのようなことが結果としてできる どちらも受動型攻撃である それに対して、もちろん違う点もある。専門家から...
PHP Security Blogでpreg_matchをフィルターとして使用する際の注意点について言及されています。
shimookaです。 皆さんはPHPでデータの暗号化・復号化をする必要に迫られた場合、どのようにしているでしょうか?今回は、PHPで利用可能なモジュールやパッケージとそれらのサンプルを3つほど挙げてみました。 mcrypt拡張モジュールを使った暗号化 libmcryptを利用したPHP拡張モジュールです。DES、3DES、Blowfish、RIJNDAEL(ラインダール:AES暗号とも呼ばれる)、Blowfishなどのブロック暗...
(コロン)」で区切られます。複数のアカウントを指定する場合には、改行をして次の行に記述します。パスワードについては、暗号化された状態で保存される必要があります。暗号化は、何かしらツールが必要なのですが、ここでは、パスワードを入れたら、暗号化された文字列を出力する CGI を提供します。 パスワードを入れてください パスワードの暗号化は、UNIX のパスワ...
携帯電話には、個々の端末を識別するための情報が付与されており、携帯電話対応WEBアプリケーションの認証などに、この情報を用いることがある。各キャリアで呼び方や取得方法が異なっているが、いずれもHTTPヘッダから取得することが可能である。(但し、ユーザーがこの情報の送信を許可していることが前提) キャリア毎の特徴、フォーマット、取得ロジックのサンプルを...
http://blog.ohgaki.net/skins/custom/img/chain_link.gif 実は「Webアプリセキュリティ対策入門」にも正しい自動ログイン処理を書いています。最近作られたアプリケーションでは「問題」にしたような実装は行われていないはず、と期待していたのですがあっさり期待を破られたのでブログに書きました。 まず自動ログインを実装しているコードの基本的な問題点を一つ一つ順番にリストアップ...