第42回PostgreSQL 9.0に見るSQLインジェクション対策 大垣靖男 2011-05-19
GMailのコンタクトリスト漏洩のエントリのついでに。 JSONデータをscriptタグにのせて配信するサービス(JSONPなど)で、限られたサイトのみにしかそのデータを配信しないようにするためには、クライアントが送出してくるリファラ情報を使ってサービスコンシューマとなっているサイトを特定してアクセス制御する方法がある。 この方法はおそらく大部分のクライアント(ブラウザ)に対しては有効で、例えば実際にGoogle MapsなどもそれとAppKeyを組み合わせてサイトを判別しているっぽいのだけど、意図的にリファラ送出を切っているブラウザであったり、あるいはプロキシプログラムなどが自動的にリファラヘッダを除去してしまうようなクライアント環境に対しては無効になってしまう。 ということで、そんなクライアントでもなんとかならないだろうかと考えていたときにちょっと思いついた、もしかしたらこの方法なら許
(Last Updated On: 2014年12月5日)LAMPセキュリティを強化する4つの方法 http://enterprisezine.jp/article/detail/311 書いてある情報は有用な事も記載されていますが、偏狭な視点からの記述により誤解を招く記事になっていると考えられます。著者はセキュリティの専門家ではないようなので仕方ないかも知れませんが、間違った認識は有害です。 # 原本は読んでいません。もしかすると日本語訳にも問題があるのかも知れません。 実行できる最も重要な対策は、PHPを使わないことです。腐った果物を導入する前に、以下に目を通してください。 後にPerl/Ruby/Pythonの方がかなり安全である旨の記述があります。メモリ管理が必要ない同じスクリプティング言語のレベルで「Perl/Ruby/Pythonを使えばセキュアなアプリケーションができる」と考
第 2 回目は 「PHP 編」です。 対象は、私、ichikawaの独断ですので、 気になる本があったらぜひ本屋さんで手にとって見てくださいね! STEP1 「PHPの絵本」 対象 プログラミング初めて!難しそうな本はちょっと・・な方 おすすめポイント 「PHPの絵本」という名前の通り、挿絵が多く、 初めてプログラミング本を手にする人にとっても抵抗感のない1冊だと思います。 最初の方はのんびりスタートなので「え?このスピードで1冊に収まるの??」 とヒヤヒヤしますが、ちゃんとそれなりにカバーしています。 「これ1冊でPHPすべてOK☆」というには厳しいですが、 「なんだかやる気がしないんだよね・・」な気分の時も、心が折れずに読み進められる・・ そんな1冊です。 継続は力なり。そして復習にもおすすめです。 STEP2 「ノン・プログラマのためのPHP入門 10日間コース」
趣味でやっている人のことは、まあ、いいとして(踏み台にされる可能性はあるけど)、仕事でPHPを使うときの注意を書いておこう。 コーディング規約を守る。組織にコーディング規約がないなら、Zend Framework PHP標準コーディング規約 [zend.com]を使う。オレ流コーディングスタイルは禁止。 内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。 開発環境の警告レベルをE_STRICTにする。本番環境ではdisplay_errorsをオフにする。 register_globals、magic_quotesはオフにする。 type hintingを積極的に使う。 スコープの長い配列をクラスでラップする。 プレゼンテーションとロジックを分割すること。プレゼ
<< 2008/01/ 1 1. 年賀状 2. ゴビウス 3. [Ruby] ZSFA -- Rails Is A Ghetto 2 1. 新年会 3 4 1. The Mythical 5% 5 6 7 8 1. [言語] Substroke Design Dump 2. [言語] A programming language cannot be better without being unintuitive 3. [OSS] McAfee throws some FUD at the GPL - The INQUIRER 9 1. [言語] Well, I'm Back: String Theory 2. [言語] StringRepresentations - The Larceny Project - Trac 10 1. [Ruby] マルチVMでRubyを並列化、サンと東大が
Webアプリケーションでは、外部からの変数に対して、形式チェック(Validation)を行ないます。PHPでこれを行なう場合に、ありがちなミスをいくつか挙げてみました。 この日記は、がるさんの日記に触発されて書いたもので、いくつかの例を引用しています。 がるの健忘録(2006/11/08) - 素晴らしき自動的な世界〜或いは「型のない」世界〜 型の問題 数値と文字列の比較 <?php $input = "2'; DELETE FROM hoge; --"; if ($input == 2) { // ↑TRUEと評価される がるさんの日記で紹介されていた例に、手を加えたものです。 if文中の式がTRUEになるのは、PHPの「==」演算子が、数値型と文字列型変数を比較する際に、文字列を(かなり強引なやり方で)数値型に変換するからです。変数の比較は、同じ型同士で行なうのが無難だと思います。
この日記をご覧の方には先刻ご承知のことだろうが、去る7月13日に、PHP 4のEOL(End Of Life)アナウンスが公式に宣言された*1。 これによると、PHP 4のメンテナンスは2007年12月31日まで、重大なセキュリティホールへの対応も2008年8月8日までとなっている。このため、既存の膨大なPHP 4アプリケーションのマイグレーションをどうするかは大きな課題である。 ここまでは皆さんご存知の情報であろう。 しかし、PHP 4アプリケーションは今も開発され続けている。私がそれを知ったのは、Webアプリケーションの脆弱性診断をしているからである。診断にてPHPなどの脆弱性を発見した場合はこれまでも都度報告していたが、2007年7月13日以降は、PHP 4を使っているだけでも、(脆弱性ではないが)上記情報を報告し、PHP 5への移行を推奨してきた。そういうレポートを書く際には、「き
http://d.hatena.ne.jp/hoshikuzu/20060130#P20060130BARSFAKE http://d.hatena.ne.jp/amachang/20071010/1192012056 (IT戦記 - 一行で IE の JavaScript を高速化する方法) はじめに 次のような限定されたケースにおいてなのですが。説明上の都合でこれを課題Aと呼ぶこととします。 <SCRIPT TYPE="text/javascript"> <!-- var strA = "$data"; // ・・・以下サイト運営者による処理記述例 alert(0); //--> </SCRIPT>上記のようなケースに限定してのオハナシですけれど、$dataをエスケープする方向でのXSS対策として金床さんなどによってかつて論議されて、このままでは使えそうにないと棄却されたJavaScr
はじめに 今回はXSSの脆弱性をチェックするPerlスクリプトを作成したいと思います。すべてのXSSによる脆弱性が回避できるわけではありませんが、テストコード作成のヒントになれば幸いです。 対象読者 Webアプリケーション開発者で、XSSのテストケースを作成したい方。 必要な環境 Perl 5.8以上が動作する環境。基本動作の確認はMac OS Xを利用しました。次のPerlモジュールを利用するので、あらかじめインストールしておいてください。 Template::Toolkit Web::Scraper Test::Base またCGIを使用するので、ApacheなどのCGIが実行できるWebサーバを用意してください。 解説内容 ソースコード解説 まず最初にソースコードの解説をします。 xss.pl
JSONPの動作原理 前回はAjaxに存在するセキュリティモデルであるSame-Originポリシーを紹介し、そのSame-Originポリシーを迂回する方法とセキュリティについて見てきました。また、回避する方法の1つめとしてリバースProxyを用いた方法を紹介しました。リバースProxyを用いた方法ではセキュリティ的な問題点もありましたが、そもそもProxyサーバを用意しなければならないため、この方法は手軽に使うことはできませんでした。 そこで考え出されたのがJSONP(JavaScript Object Notation with Padding)という方法です。 それではまず簡単にJSONPについて説明します。 Ajaxで使われるXMLHttpRequestオブジェクトには前回説明したとおりSame-Originポリシーがありクロスドメインアクセスはできません。一方、SCRIPTタグ
■ 続・厚生労働省の脆弱性放置は何が問題とされているのか 一昨日の日記の続き。結論から言うと、今日気付いた事実により、一昨日の最後の節「Sun Microsystemsの愚行」は取り消さねばならない。その問題は昨年既に解決されていた。したがって、電子政府でとるべき措置も明確になった。 目次 JREの脆弱性には2つのタイプがある 「電子申請システムを利用するにあたっては問題ありません」が嘘になる場合 JRE組み込みのアプリケーション開発という方法 Java Updateしても古いJREが消えない問題 ファミリバージョン指定という5.0 Update 7以降の機能 電子申請システムを安全かつ便利にするため今なすべきこと JREの脆弱性には2つのタイプがある まず、JREの脆弱性とは何かを確認しておく必要がある。JREの脆弱性には大別して2つのタイプがある。sandboxの柵が破れる脆弱性と、そ
■ 厚生労働省の脆弱性放置は何が問題とされているのか 目次 今回の報道 過去の経緯 何が問題なのか 本当に動かなくなるのか 内閣官房に期待すること 新たな問題(Sun Microsystemsの愚行) 今回の報道 先週、NHKが、厚生労働省の電子申請システムのセキュリティ上の問題点を取り上げていた。 NHKニュース「厚労省 欠陥ソフトを放置」, 2007年7月5日 ニュース7 厚生労働省はホームページ上で特定のコンピューターソフトを提供していますが、このソフトには重大な欠陥があり、利用者がパソコンの情報を盗まれるおそれのあることがわかりました。(略) 厚生労働省は、こうした情報を把握できず、5か月以上にわたって、欠陥が修正された最新のソフトに切り替えたり、利用者に注意を呼びかけたりするなどの対策をとっていませんでした。 NHKニュース「厚労省 欠陥ソフト提供中止」, 2007年7月6日 お
2007年6月7日 はてなブックマークのコメントをうけて、「常にJSONP、JSON、JavaScriptに機密事項を含めないように」という主張を改め、「クロスドメインアクセスの対策をとっていない状態ではJSONP、JSON、JavaScriptに機密事項を含めないように」という主張に関して記述しました。 こんにちは、SEの進地です。 今回から週単位でWebアプリケーションのセキュリティに関するエントリーを書いていこうと思います。 僕自身、日々勉強して精進というところですので、もし何らかの誤りがあれば是非ご指摘ください。 つっこみ大歓迎です。 今回取り上げるのはWeb 2.0なアプリケーションでセキュリティ面で気をつけるべきことの一つ、機密情報にJSONPでアクセスするなです。 JSON(JavaScript Object Notation)はJavaScript(ECMAScript)の
5/11の日記XSS対策:JavaScriptなどのエスケープ - ockeghem(徳丸浩)の日記に対する金床さんのコメントに触発されて、JavaScriptのエスケープについて検討してみよう。ただし、現実のアプリケーション開発においては、私はJavaScriptの動的生成を推奨していないが、これはエスケープ処理をどのように考えるかと言うレッスンのつもりで検討することにする。 金床さんのコメントで紹介されたリンクには、以下のようなガイドライン案が提案されている。 JavaScriptの文字列でのエスケープ手順としては、以下が今のところ正解っぽい感じです。 1. 「\」を「\\」に置換する 2. 「"」を「\"」に置換する 3. 「'」を「\'」に置換する 4. 「/」を「\/」に置換する 5. 「<」を「\x3c」に置換する 6. 「>」を「\x3e」に置換する 7. 「0x0D(CR)
米XeroxのLeigh L. Klotz, Jr.氏は26日(米国時間)、DeXSSの最新版となるDeXSS 1.0.0を公開した。DeXSSはJavaで実装されたSAX2パーサ。XSS攻撃対策を実施するためのライブラリとして開発されている。成果物はAcademic Free License ("AFL") v. 3.0のもと、オープンソースソフトウェアとして公開されている。 ユーザからのテキスト入力を受け付けるダイナミックなサイトでは、XSS(Cross Site Scripting)のような攻撃を受ける可能性がでてくる。DeXSSはHTMLパーサであるTagSoupを活用することでHTMLを読み込んでSAX2イベントを生成。スクリプトや属性を削除するための機能を提供する。 同ライブラリではフィルタの形式でイベントに対する処理を記述。また同梱されている機能を使って文字列変換などを実施で
PHPでは、HTMLエスケープ用の関数としてhtmlspecialcharsが用意されています。 今日の日記では、htmlspecialcharsについて書きます。これと近い働きをするhtmlentitiesについても触れます。 htmlspecialcharsの基本 こんな感じで使います。 <?php echo htmlspecialchars($string, ENT_QUOTES, "UTF-8"); ?> 関数の引数は3つあります。 引数省略概要 第一引数不可エスケープ対象の文字列 第二引数可クォート文字の扱い(後述) 第三引数可文字コード(後述) 第二引数は、以下の3つの値のいずれかを指定可能です。 値エスケープ対象文字 ENT_NOQUOTES< > & ENT_COMPAT< > & " ENT_QUOTES< > & " ' 第二引数を指定しない場合のデフォルトは、ENT_
セキュリティ研究者が、JavaScript対応ブラウザを攻撃に利用するコードをデモした。クロスサイトスクリプティングの脆弱性を悪用した攻撃は危険度を増している。 危険すぎて公開できない新たなツール「Jikto」は、ブラウザが搭載されたあらゆるPC――Windowsでも、Macでも、Linuxでも――あるいはあらゆるデバイスをサイト攻撃者に変えることができる。 このツールは、クロスサイトスクリプティングの脆弱性を探すWebアプリケーションスキャナ。SPI Dynamicsのセキュリティ研究者ビリー・ホフマン氏は3月24日のハッカーコンベンションShmooConで、このツールを使った攻撃手法をデモンストレーションした。JavaScriptで書かれたJiktoは、JavaScript対応ブラウザにひそかに入り込むことができる。 JiktoはPCあるいは携帯電話のブラウザ内に自身をひそかに組み込ん
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く