PHP 製アプリケーション向けセキュアコーディングチェックの具体的な対処方法
概要
弊社GMOペパボではPRを立てる際に、以下のセキュアコーディングチェックを行う事になった為、ただコードを修正してPRを立ててレビューして貰ってマージする仕組みでは駄目で、その変更に対して以下のセキュアコーディングチェックリストを満たしているか?も考慮する必要がある。
code:php
PHP 製アプリケーション向けセキュアコーディングチェックリスト
(PCI DSS 6.5.1) SQLインジェクションのないこと
(PCI DSS 6.5.2) 異常な入力値(大きなサイズ、不適切な文字列等)であっても適切に処理していること
(PCI DSS 6.5.5) エラー発生時に、機密情報が漏洩しないようプログラムされていること
(PCI DSS 6.5.7) XSSのないこと
(PCI DSS 6.5.8) アクセス制御が適切に行われていること
(PCI DSS 6.5.9) CSRFのないこと
(PCI DSS 6.5.10) セッション管理が適切に行われていること
(PCI DSS 6.5.3) 機密情報の保存について、適切な暗号化方式を用いていること
(PCI DSS 6.5.4) 機密情報の通信について、適切な暗号化方式を用いていること
ファイルアップロード機能のセキュリティポリシーチェック
アップロード可能なファイルの拡張子をホワイトリストで明示している
ファイルをHTTP(S)からアクセス不可能な場所に配置している
アップロードしたファイルはユーザーが実行不可能としている
キャッシュストア ( e.g. memcached, redis 等)に個人情報等に値する秘匿すべき情報資産を格納していないこと
が、これだけのチェックリストを埋める為にも、作業者自身がXSS、CSRFなどの脆弱性を用いた攻撃手法に対する知識と、対策方法を知らないといけない。残念ながら自分はあまりセキュリティに対する知識がある訳ではなく、前提知識も乏しい為ここで、1つ1つの攻撃手法に対する知識と対策をまとめたい。
という記事です。という事でやっていくぞ〜!オラァ〜!
SQLインジェクションのないこと
ORマッパーでDBにアクセスする事