OpenPNEが考慮しているセキュリティ対策です。
個人情報漏洩対策
OpenPNEでは重要なデータ(c_member_secureテーブル)を暗号化して保存しています。
暗号鍵とDBデータを別々に管理することで、たとえDBデータが流出してもc_member_secure内の内容を保護することができます。
一般的な脆弱性に対する対策
”’*XSS(Cross Site Scripting)”’::
DB、リクエストから取得した値を表示する際にはHTML生成前に
デフォルトで全てサニタイズされるようにしており、
管理画面から管理者が入力した項目など信頼できる一部の値のみを
そのまま表示するようにしている
”’*SQL Injection”’::
変数が含まれるSQL文はプレースホルダを使用し
エスケープ処理を行っている
”’*CSRF(Cross Site Request Forgeries)”’::
データ登録・編集などdoアクションのすべてのリクエストに
セッションIDに基づいたハッシュ値(セッションIDそのものではない)
を含めて、これが一致しない場合にはアクションを行わない
”’*Null Byte Attack”’::
リクエストバリデーションの際に、事前のフィルタリングで
全変数デフォルトでヌルバイトを削除している
”’*Directory Traversal”’::
ローカルファイルをオープンする場合には
/などを含む文字列は弾いている
”’*HTTP Response Splitting”’::
リダイレクトのためのLocationヘッダなど、
スクリプト側で動的にHTTP Response Headerを生成する場合には
不要なCRおよびLFを除去している
”’*Session Hijacking”’::
携帯版を除きセッションIDの取得はCookieからのみに制限している
また、セッションの有効期限をpc/ktai/adminそれぞれに設定できる[[BR]]
携帯版については、GET(/POST)でセッションIDを引き回すため
URLにセッションIDが含まれてしまうが、Refererで外部に漏れないよう
外部サイトへのリンクを一切生成しないようにしている
また、デフォルトでセッションの有効期限を短く設定している
”’*Session Fixation”’::
pc/ktai/admin ともにログイン時に、その時点のセッションIDを無効にして
新しいセッションIDを生成している
”’*File Upload Attack”’::
アップロードファイルは画像のみに限定し、
アップロード時に必ずGDに通し画像として変換できたもののみを
正当な画像として受け入れている
”’*OS Command Injection”’::
外部コマンドを実行する関数は一箇所だけで、
画像変換にImageMagickを使用する設定にしていた場合にのみ
passthru()関数を使用するが、
引数として渡すコマンドは検証済みのもので
リクエストを直接入れるようなことはしていない
”’*Parameter Manipulation”’::
入力バリデータに通し検証済みの値を使用している
”’*Brute force attack”’::
招待状発行時及び新規登録時に画像認証を挟むようにしている
ログイン時の連続パスワード入力に対して、IPアドレス制限による繰り返しリクエストの防止機構が入っています。