外資系企業に住む住人の視点からIT業界の出来事を伝えます。ご興味のある方は、メルマガの登録をお願い致します。Twitterやっています。→http://twitter.com/juntoku_yマイナビニュースで「IT業界裏講座」を掲載中です。そちらもヨロシクお願い致します。→コンサル直伝−IT業界”裏”講座EnterpriseZine(翔泳社)で記事掲載中です。そちらもヨロシクお願い致します。マネジメントセンター(JMAM)より「フレームワーク使いこなしブック」を上梓しました。仕事の質と効率を高める思考の枠組み・フレームワーク。本書は、架空のパンメーカー・ナイスハーベスト社を舞台に、新人のむぎ夫がフレームワークを使って課題を解決していくストーリーを追いながら、フレームワークを学べる仕掛けになっています。最終章では、オリジナルのフレームワークを作る方法も紹介。「わかる」レベルから「使える」レベルに無理なくステップアップできます。2012年7月末、同じくJMAMより「ビジネス思考法使いこなしブック」を上梓しました。こちらもむぎ夫が登場し、ロジカルシンキング・ラテラルシンキング・クリティカルシンキングの3つをどうやって使いこなすか、問題解決の発想技法を学べる仕掛けになっています。このジャンルでは、おそらく初めて3つのシンキングを体系的に1冊の本でまとめている本です。以下の書籍も執筆しています。こちらも合わせてどうぞ。『外資系企業に住む住人の視点からIT業界の出来事を伝えます。以前好評いただいた『資料作成の基本』から図解作成だけにテーマを絞って抽出した本が2018年6月23日に発売となります。https://www.amazon.co.jp/dp/4799106511本書は「資料」ではなく「図解」の作成に特化しています。図解は、論理的にわかりやすい内容、感覚的に心地よい見た目が好まれます。図形のカタチ(フォーム)と配置(ポジション)で生み出される「要素のバランス」、色の使い分け(カラー)によって醸し出される「コンテンツの強弱」です。それらを「図解キューブ」というモデルで表し、その実践例をチャートとグラフの「図解パターン」として体系的・網羅的に整理しました。これらを「エグゼクティブ図解術」と私は呼んでいます。本書を図解作成のハンドブックとして、ぜひ使ってみてください。|2013年01月>>2012年12月20日Web技術者が知っておくべき9つの脅威とその対策インターネット上には様々な脅威が溢れていますが、特に、ネット上でサービスを提供する側にとって恐ろしいのは、自分たちのサービスから利用者の個人情報を抜き取ろうという悪意の第三者による不正情報アクセスです。Webでサービスを提供するシステムを構築した経験がある人ならわかると思いますが、セキュリティへの感度が低いアプリ技術者が開発したWebシステムというのは、本当に抜け穴だらけです。入力フォームひとつとっても、まともなバリデーションが設定されておらず、フォーム欄にSQLコマンドを入力すると、コマンド結果をきっちり返してしまうという杜撰なシステムが数多とあります。予算をあまり割くことができないWeb開発において、Webセキュリティに優れた技術者を確保しろと言われても、コスト的に無理だと言わざるを得ない現場も多いことでしょう。そんなジリ貧な現場で頑張らざるを寝ない皆さんにとって朗報なのが、IPA(情報処理機構)が公開している「安全なウェブサイトの作り方」というPDFファイルです。『脆弱性対策:安全なウェブサイトの作り方』http://www.ipa.go.jp/security/vuln/websecurity.html以下、目次をご覧ください。アクセス制御や認可制御の欠落Web開発技術者にとって一度は聞いたことのあるセキュリティ用語がずらっと並んでいます。良識ある技術者なら「これくらい知っていて当然」と思うのかもしれませんが、では中身を他の人にちゃんと説明できるでしょうか。具体的な実装対策、リスクを軽減するための方法も含めるなら、説明できる人は一握りの人しかいないと思われます。このPDFファイルには、それらが図や構文入りで記載されていますし、実装の失敗例も構文付きで解説されているので、はじめてWeb開発に取り組む人でも、いきなりセキュリティ専門家に近い目線で実装していくことが可能です。前述した『Web開発における9つの脅威』について解説します。文(データベースへの命令文)を組み立てています。文の組み立て方法に問題がある場合、攻撃によってデータベースの不正利用をまねく可能性があります。文の組み立ては全てプレースホルダで実装する。文のリテラルを正しく構成する。コマンドを不正に実行されてしまう問題を持つものがあります。根本解決:・シェルを起動できる言語機能の利用を避ける。・シェルを起動できる言語機能を利用する場合は、その引数を構成する全ての変数に対してチェックを行い、あらかじめ許可した処理のみを実行する。パス名パラメータの未チェック/ディレクトリ・トラバーサルウェブアプリケーションの中には、外部からのパラメータにウェブサーバ内のファイル名を直接指定しているものがあります。このようなウェブアプリケーションでは、ファイル名指定の実装に問題がある場合、攻撃者に任意のファイルを指定され、ウェブアプリケーションが意図しない処理を行ってしまう可能性があります。根本解決:・外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける。・ファイルを開く際は、固定のディレクトリを指定し、かつファイル名にディレクトリ名が含まれないようにする。セッション管理の不備ウェブアプリケーションの中には、セッションID(利用者を識別するための情報)を発行し、セッション管理を行っているものがあります。不正に取得され、その利用者になりすましてアクセスされてしまう可能性があります。Fixation)」と呼ばれる攻撃手法があります。何らかの方法で利用者に送り込み、利用者がこれに気付かずにパスワードを入力するなどしてログインすると起こりうる問題です。利用し、利用者になりすましてウェブサイトにアクセスすることができてしまいます。推測が困難なものにする。パラメータに格納しない。・ログイン成功後に、新しくセッションを開始する。・ログイン成功後に、既存のセッションIDとは別に秘密情報を発行し、ページの遷移ごとにその値を確認する。ヘッダの情報を処理し、ウェブページとして出力するものがあります。ここで、ウェブページへの出力処理に問題がある場合、そのウェブページにスクリプト等を埋め込まれてしまいます。テキストの入力を許可しない場合)・ウェブページに出力する全ての要素に対して、エスケープ処理を施す。要素の内容を動的に生成しない。・スタイルシートを任意のサイトから取り込めるようにしない。テキストの入力を許可する場合)・入力されたHTMLテキストから構文解析木を作成し、スクリプトを含まない必要な要素のみを抽出する(全てのウェブアプリケーションに共通の対策)・HTTPレスポンスヘッダのContent-Typeフィールドに文字コード(charset)を指定する。(クロスサイト・リクエスト・フォージェリ)ウェブサイトの中には、サービスの提供に際しログイン機能を設けているものがあります。ここで、ログインした利用者からのリクエストについて、その利用者が意図したリクエストであるかどうかを識別する仕組みを持たないウェブサイトは、外部サイトを経由した悪意のあるリクエストを受け入れてしまう場合があります。このようなウェブサイトにログインした利用者は、悪意のある人が用意した罠により、利用者が予期しない処理を実行させられてしまう可能性があります。パラメータ」に秘密情報が挿入されるよう、前のページを自動生成して、実行ページではその値が正しい場合のみ処理を実行する。・処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは、再度入力されたパスワードが正しい場合のみ処理を実行する。正しいリンク元かを確認し、正しい場合のみ処理を実行する。ヘッダ・インジェクションウェブアプリケーションの中には、リクエストに対して出力するHTTPレスポンスヘッダのフィールド値を、外部から渡されるパラメータの値等を利用して動的に生成するものがあります。ヘッダのフィールド値に使用する場合等が挙げられます。レスポンスヘッダの出力処理に問題がある場合、攻撃者は、レスポンス内容に任意のヘッダフィールドを追加したり、任意のボディを作成したり、複数のレスポンスを作り出すような攻撃を仕掛ける場合があります。利用できない場合は、改行を許可しないよう、開発者自身で適切な処理を実装する。メールヘッダ・インジェクションウェブアプリケーションの中には、利用者が入力した商品申し込みやアンケート等の内容を、特定のメールアドレスに送信する機能を持つものがあります。一般に、このメールアドレスは固定で、ウェブアプリケーションの管理者以外の人は変更できませんが、実装によっては、外部の利用者がこのメールアドレスを自由に指定できてしまう場合があります。:・メールヘッダを固定値にして、外部からの入力はすべてメール本文に出力する。