KOBITブログ

【今さら聞けない?】Web制作会社が抑えておきたい「セキュリティ対策」【保存版】

この記事は約 7分 で読めます。

SecurityBasics_Fotolia_78740971_XS

セキュリティ対策は十分ですか?Web制作の忙しさに負け、セキュリティ対策を後回しにしていませんか?名前は知っていても、実際、何のリスクがあり、どのような対策が必要か分からないなんてことはありませんか?セキュリティ対策を怠ると、依頼主が情報漏えいなどの被害を受けたり、一般ユーザーに迷惑をかけたりする恐れがあります。今さら聞けないセキュリティ対策の基本について解説します。

セキュリティ対策7選

クロスサイト・スクリプティング(XSS)

入力フォームのある掲示板やレビューサイトでは、あるユーザーが書きこんだ値がサイトに表示され、他のユーザーから閲覧できる状態になります。XSSとは、この入力情報に悪意あるプログラム(スクリプト)を埋め込んで、不正な処理を行う攻撃です。具体的には、クッキーの値を読み込んで秘密情報を盗んだり、ページ全体を書き換えて「フィッシング詐欺」を行ったりするリスクが報告されました。

XSSを防ぐには、出力値を適切に表示する手続きが欠かせません。悪意あるユーザーが書き込んだスクリプトが実行されてしまうのは

のようなタグが文字列ではなく実行可能なスクリプトとして認識されてしまうからです。ユーザーが「<」を入力した場合には「 <」に置換する、といった対策が求められます。

SQLインジェクション

ユーザー情報や製品情報などのデータベースを保有するWebサイトでは、検索窓に文字列を入力し情報を呼び出す、編集するといった機能が提供されています。SQLインジェクションは悪意ある文字列を入力し、データベースの内容を不正に操作する攻撃として有名な手法です。例えば、製品情報が「SELECT * FROM products WHERE name = ‘(入力文字列)’」のSQLで呼び出されるときに、「x’ OR ‘x’ = ‘x」が入力されると「SELECT * FROM products WHERE name = ‘x’ OR ‘x’ = ‘x’」となってしまいます。「x=x」が常に真であるため、全てのデータが呼び出されてしまう結果になるのです。

対策としては特殊文字を適切に置換する方法が考えられます。Webアプリケーション開発においては、O/Rマッピングと呼ばれるツールの導入や、データベースの仕組みを活用するといった対策がより一般的です。

クロスサイト・リクエスト・フォージェリ(CSRF)

掲示板やフォーラムにユーザーが意図しない書き込みを行う攻撃で、2005年にMixiが被害に遭い、話題になりました。まず、悪意ある開発者が、特定の掲示板などに自動で書き込みを行うプログラムを埋め込んだWebサイトを設置します。何も知らないユーザーが悪意あるサイトを訪問したときにプログラムが自動的に実行され、掲示板への書き込みが行われてしまいます。

掲示板やフォーラムのようなユーザーの入力を受け付けるWebサイトを運営している開発者はCSRFの対策が必須です。具体的には、フォーム画面を表示したときに乱数を発行し、ユーザーがフォームを入力した際に、乱数の値が正しく返されたかどうかを確認します。他サイトからフォームが送られるCSRFでは乱数が発行されていないので、不正な投稿を検知できるのです。最新のPHPやRubyなどのライブラリでは標準的に対策が施されているので、それらの活用が望ましいでしょう。

二段階認証

ユーザーIDやパスワードが盗まれてしまうと「なりすまし」の被害が発生する恐れがあります。オンラインバンキングはもちろん、Eコマースサイト等でも不正利用された場合の被害は大きなものになります。なりすましのリスクを軽減するため「二段階認証」の仕組みが開発され、GoogleやLINEでは既に導入されています。

二段階認証ではログインする際に「確認コード」を発行し、スマートフォンなどでの確認を要求します。確認コードが正しく入力された場合のみ、ログインを許可する流れです。登録した電話番号・スマートフォン、あるいは専用トークンが無ければ、ログインできなくなるため「なりすまし」のリスクを低減できます。

公開鍵・秘密鍵

インターネット上で安全に情報を送信するには暗号化が有効です。ある文字列を「鍵」に見立てて、暗号をかければ、ファイル自体が傍受されても内容が分かりません。しかし、鍵の欠点は、鍵そのものを盗まれることです。インターネット通信で「鍵」を送信すると、鍵自体が傍受されるリスクがあり、非常に危険であると認識されました。そこで、鍵の送信を安全に行おうとする取り組みが公開鍵暗号方式です。

まず、受信者は秘密鍵と対になった公開鍵を作成し、一般に公開します。その受信者にファイルを送りたい送信者は公開鍵を使ってファイルの暗号化を行います。受信者は受け取ったファイルを秘密鍵によって複合し、内容を閲覧する流れです。秘密鍵がなければファイルが複合できないため、悪意ある人間がファイルを傍受しても内容は分かりません。

公開鍵暗号方式は多くの場面で使われ、サーバーにログインするSSH、Webサイトを暗号化するHTTPSなどが該当します。秘密鍵が他者の目に漏れないよう注意する必要があります。

SSL(無料版・ドメイン認証・実在認証・EV)

ネットショッピングでは個人情報やクレジットカード情報など、機密情報をやり取りします。インターネット上で盗聴されるリスクを減らすために暗号化通信を行うのがSSL通信です。さらに、ネットショッピングなどの運営者が信頼できる機関であるとの身元証明を行うのがSSLサーバ証明書になります。

SSLサーバ証明書には安全性のレベルによって、いくつかの種類があります。まず、URLが正しく登録された実在するものである点を機械的に確認するのが「ドメイン認証」であり、多くの無料版がこのレベルの証明を行っています。次に、サイト運営者が法的に実在する組織である点を第三者機関によって確認するのが「実在認証」です。さらに、組織が物理的に存在している点が確認できれば「EV(Extended Validation)」が認められ、ブラウザ上に運営組織が表示されるようになります。

Firesheep対策

Firesheepは、Firefox用アドオンとして開発され、公衆無線LANで使用すると他のユーザーのログイン名やパスワードが見えてしまうという問題作です。日本でも駅や商業施設などで公衆無線LANが増加しているため、多くのユーザーに危険が迫っています。

ユーザー側でとれる対策は少ないため、Webサイト運営者が責任を持ってHTTPS通信をサイトに施す必要があります。

まとめ

セキュリティ対策はWebサイト開発者の責任です。発生確率が低いからと言って放置しておくと、いつ甚大な被害をもたらすか分かりません。基本的な事項を理解し、時間やコストをあまりかけないよう工夫しながら、今すぐセキュリティ対策を進めなければいけません。


さあ、KOBITをスタートしよう。