よりセキュアなアプリケーションを作るには

よりセキュアなアプリケーションを作るには

まず、セキュリティとは完全にするのは非常に難しいことです。よって「よりセキュアにすることで、被害を最小限に防ぐ」という努力を行う必要があります。

基本的なWEBアプリケーションのセキュリティ対策についてはIPAの「安全なウェブサイトの作り方」が参考になります。この連載ではカバーしきれないことばかりですが、OpenSocialアプリとして気をつけるべきポイントをいくつかご紹介します。

実装面

mixiアプリにかかわらずWEBアプリケーションを作る上で必ず意識しなければいけないことがあります。それは「ユーザー(クライアント)から送られてくるデータは信頼できない」ということです。

例えば、結果(スコア)を競うようなアプリを作る場合を考えてみましょう。ゲームを行いその結果をサーバーに送り結果を他のユーザーと共有するような実装を行ってしまうとデータ処理や外部通信部分が隠ぺいできないため、悪意あるユーザーはユーザースクリプト(user.js、GreaseMonkey等)やProxyを使用することでデータを簡単に改ざんすることが可能です。

では改ざんされるということは何が悪いことなのでしょうか? 自分のスコアを操作できるぐらいならいいのでは? とも考えられるかもしれません。ですが、これは個人単位で使用するのか多人数が共有して使用するのかで意味合いが変わってきます。ユーザーは自分のデータや自分を取り巻く環境(状況)が自分の意志とは別に変化することを好みません。またユーザー自身の時間や金銭といったコストをそのアプリケーションに費やしている場合はさらにその思いが強くなるはずです。

JavaScriptAPIのデータの完全性について
OpenSocialアプリとして気をつけなければならない点としてはJavaScriptAPIで取得した情報を完全に信用することは危険だということです(上記で書いた改ざんの恐れがあります)。例えば使用しているユーザーのマイミク情報がシステム的に重要な要素であればJavaScriptAPI経由で取得するのではなく、RestfulAPI経由で取得するべきです。
詳細情報:mixi Developer Center「RESTful API仕様」
外部との通信やユーザー認証を行う
外部と通信する場合、どのユーザーに紐付いた情報かを検証する必要があります。その場合は署名付きリクエストを使用すべきです。データを受け取る側は付与されている情報から署名付きリクエストが正しいものか検証しましょう。また、予想外の入力を防ぐためにバリデーション機能を実装したほうがよいでしょう。
詳細情報:mixi Developer Center「外部サーバを呼び出してみよう」

またサービスを復旧させるためにデータのバックアップを取っておきましょう。

運用面

セキュリティというと実装面ばかりに目がいきがちですが、サービスを提供する環境や日々の運用にも注意が必要です。

社内システム、サービス提供環境のウィルス汚染を防ぐ
汚染したパソコンやUSBメモリは社内システムを内部から広域に渡って汚染する恐れがあります。
サービス提供者のウィルス感染はユーザーから見れば、「被害者」ではなく二次被害を引き起こした「加害者」という扱いをされてしまいます。
セキュリティ情報をこまめにチェックし、使用している製品の脆弱性に対応する必要がある場合はセキュリティフィックスされたバージョンにアップグレードする、製品の使用を中止するといったことを検討・実行してください。
ログの出力やデータのバックアップ
脆弱性の報告を受けたらまず行うのは、原因となるバグを発見することでしょう。WEBサーバーやWEBアプリケーションフレームワーク等のログを出力するようにし、ある程度の期間保管するといったことを行いましょう。ログがあるかないかでは対応のスピードがかなり変わってくる場合があります。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30