24 | | |
25 | | [wiki:Contribute 上へ戻る] |
26 | | ----- |
27 | | == 仕様書最新版 == |
28 | | [https://trac.openpne.jp/svn/OpenPNE_specification/trunk/SPEC_OpenPNE_2_6.pdf OpenPNE2.6概要仕様書] |
29 | | |
30 | | == 仕様書旧安定版 == |
31 | | [https://trac.openpne.jp/svn/OpenPNE_specification/trunk/SPEC_OpenPNE_2_4.pdf OpenPNE2.4概要仕様書] |
32 | | |
33 | | |
34 | | [https://trac.openpne.jp/svn/OpenPNE_specification/trunk/OpenPNE2_4テーブル定義書.xls OpenPNE2.4テーブル定義書] |
35 | | |
36 | | [https://trac.openpne.jp/svn/OpenPNE_specification/trunk/OpenPNE2_4画面遷移.ppt OpenPNE2.4画面遷移図] |
37 | | |
38 | | [wiki:Contribute 上へ戻る] |
39 | | ----- |
40 | | == OpenPNEのセキュリティ対策 == |
41 | | |
42 | | '''*XSS(Cross Site Scripting)''':: |
43 | | DB、リクエストから取得した値を表示する際にはHTML生成前に |
44 | | デフォルトで全てサニタイズされるようにしており、 |
45 | | 管理画面から管理者が入力した項目など信頼できる一部の値のみを |
46 | | そのまま表示するようにしている |
47 | | |
48 | | '''*SQL Injection''':: |
49 | | 変数が含まれるSQL文はプレースホルダを使用し |
50 | | エスケープ処理を行っている |
51 | | |
52 | | '''*CSRF(Cross Site Request Forgeries)''':: |
53 | | データ登録・編集などdoアクションのすべてのリクエストに |
54 | | セッションIDに基づいたハッシュ値(セッションIDそのものではない) |
55 | | を含めて、これが一致しない場合にはアクションを行わない |
56 | | |
57 | | '''*Null Byte Attack''':: |
58 | | リクエストバリデーションの際に、事前のフィルタリングで |
59 | | 全変数デフォルトでヌルバイトを削除している |
60 | | |
61 | | '''*Directory Traversal''':: |
62 | | ローカルファイルをオープンする場合には |
63 | | /などを含む文字列は弾いている |
64 | | |
65 | | '''*HTTP Response Splitting''':: |
66 | | リダイレクトのためのLocationヘッダなど、 |
67 | | スクリプト側で動的にHTTP Response Headerを生成する場合には |
68 | | 不要なCRおよびLFを除去している |
69 | | |
70 | | '''*Session Hijacking''':: |
71 | | 携帯版を除きセッションIDの取得はCookieからのみに制限している |
72 | | また、セッションの有効期限をpc/ktai/adminそれぞれに設定できる[[BR]] |
73 | | 携帯版については、GET(/POST)でセッションIDを引き回すため |
74 | | URLにセッションIDが含まれてしまうが、Refererで外部に漏れないよう |
75 | | 外部サイトへのリンクを一切生成しないようにしている |
76 | | また、デフォルトでセッションの有効期限を短く設定している |
77 | | |
78 | | '''*Session Fixation''':: |
79 | | pc/ktai/admin ともにログイン時に、その時点のセッションIDを無効にして |
80 | | 新しいセッションIDを生成している |
81 | | |
82 | | '''*File Upload Attack''':: |
83 | | アップロードファイルは画像のみに限定し、 |
84 | | アップロード時に必ずGDに通し画像として変換できたもののみを |
85 | | 正当な画像として受け入れている |
86 | | |
87 | | '''*OS Command Injection''':: |
88 | | 外部コマンドを実行する関数は一箇所だけで、 |
89 | | 画像変換にImageMagickを使用する設定にしていた場合にのみ |
90 | | passthru()関数を使用するが、 |
91 | | 引数として渡すコマンドは検証済みのもので |
92 | | リクエストを直接入れるようなことはしていない |
93 | | |
94 | | '''*Parameter Manipulation''':: |
95 | | 入力バリデータに通し検証済みの値を使用している |
96 | | |
97 | | '''*Brute force attack''':: |
98 | | 招待状発行時及び新規登録時に画像認証を挟むようにしている |