はじめに
2019年7月7payの被害の件で、大きなニュースでした。
参考記事:「7pay」不正問題には、日本企業の経営のダメさが凝縮している
安全なウェブアプリケーションの作りはとても重要です。
IPAの「安全なウ ェ ブ サ イ ト の作り方」 にまとめた内容は決済サイトはもちろん、一般サイトでも徹底的に対応すべきですね。
セキュリティとは
セキュリティの定義は領域によって違いますが、情報セキュリティだったら下記の特性を持っています。
- 機密性 (confidentiality): 情報へのアクセスを認められた者だけが、その情報にアクセスできる状態を確保すること
- 完全性 (integrity): 情報が破壊、改ざん又は消去されていない状態を確保すること
- 可用性 (availability): 情報へのアクセスを認められた者が、必要時に中断することなく、情報及び関連資産にアクセスできる状態を確保すること
脆弱性と攻撃の種類(wiki)
- バックドア - セキュリティ上の問題になりうるソフトウエアの脆弱性、欠陥。バッファオーバーランやクロスサイトスクリプティング、SQLインジェクションなどがある。
- ポートスキャン
- ダイレクト・アクセス攻撃
- 盗聴
- マルチベクトル型攻撃、ポリモルフィック攻撃
- フィッシング (詐欺)
- 権限昇格攻撃 (Privilege escalation)
- ソーシャル・エンジニアリング
- スプーフィング攻撃
- 改竄
- サイドチャネル攻撃
- 辞書攻撃
- コンピュータウイルス
- ワーム (コンピュータ)
-トロイの木馬 (ソフトウェア) - スパイウェア
- ルートキット
IPA安全なウェブアプリケーションの作り方
下記のセキュリティ問題を全部プログラム上対応する必要があります。
- SQL インジェクション
- OS コマンド・インジェクション
- パス名パラメータの未チェック/ディレクトリ・トラバーサル
- セッション管理の不備
- クロスサイト・スクリプティング
- CSRF(クロスサイト・リクエスト・フォージェリ)
- HTTP ヘッダ・インジェクション
- メールヘッダ・インジェクション
- クリックジャッキング
- バッファオーバーフロー
- アクセス制御や認可制御の欠落
特にXSS対応、セッションID保護のほうが漏れなく対応、確認が必要です。
パスワード管理
パスワード設計
十分な強度あるパスワード設計が必要です。
パスワード強度設計:
- 数字、大文字、小文字、記号それぞれ1文字以上
- パワードの長さは8文字以上
- パスワード辞書に載っているありがちな単語の禁止
- ID、パスワードは同じでない(ジョーアカウント禁止)
- ユーザーの個人情報は利用しない(生年月日、名前など) ※チェックできない場合はユーザーに注意喚起の文言を提示
- 他サイトと同じID、パスワードを利用しない ※ユーザーに注意喚起の文言を提示
パスワード総数は、94種類文字で約6100兆通りで十分な強度ではあります。
パスワード保護
もっとも重要なものはパスワードの保護です。
- DBに保存する際には「ハッシュ+ソルト+ストレッチング」で強化する
- アカウントロック機能を設ける(3回以上だったらロックなど)
- ログインする際に「私はロボットではありません」の機能を設ける
- パスワード変更の際には、旧パスワードの入力が必須にする
- パスワードの世代管理を設ける
- パスワード有効期限を設ける
- 二段階認証(特に違うデバイスの初回目のログインの場合、認証コードなどで本人確認)
- パスワード忘れの場合は任意メールアドレスは許可しない
- パスワード忘れの場合は秘密の質問回答を求める
- 複数デバイスの場合は、強制ログアウト機能を設ける (保険対策)
- 違う地域のログインの場合はメールで通知する (保険対策)
- ソーシャルエンジニアリングの軽減でユーザーに注意喚起の文言を提示
コード決済のガイドライン
経済産業省はコード決済(QRコード決済)に用いられる統一QRコード・統一バーコードの仕様を策定しました
https://www.meti.go.jp/press/2018/03/20190329002/20190329002.html
・コード決済に関する統一技術仕様ガイドライン【利用者提示型】CPM(Consumer-Presented Mode)
https://www.paymentsjapan.or.jp/wordpress/wp-content/uploads/2019/03/CPM_Guideline_1.1.pdf
・コード決済に関する統一技術仕様ガイドライン【店舗提示型】MPM(Merchant-Presented Mode)
http://www.paymentsjapan.or.jp/wordpress/wp-content/uploads/2019/03/MPM_Guideline_1.0.pdf
・コード決済における不正流出したクレジットカード番号等䛾不正利用防止対策に関するガイドライン
https://www.paymentsjapan.or.jp/wordpress/wp-content/uploads/2019/04/Fraud_Prevention_Guideline.pdf
コード決済などのシステムは、専門家たちが策定したガイドラインを守ったら、知識不足、対応漏れなどを回避できます。
以上