Version 23 (modified by 13 years ago) (diff) | ,
---|
OpenPNE仕様メモ
OpenPNEの正式な仕様書が出来るまでの仕様メモです。
PC版の推奨環境
- Windows
-
- Microsoft Internet Explorer 6.0以上
- Mozilla Firefox 1.5以上
- Opera 9.25以上
- Mac OS X
-
- Apple Safari 3.0以上
- Mozilla Firefox 1.5以上
- Opera 9.25以上
※Cookie, JavaScript, CSS が有効な状態である必要があります
※ここに掲載されている以外にも動作する可能性はありますが、小窓機能や文字装飾機能が動作しなかったり、表示が崩れることがあります
携帯版の推奨機種
OpenPNE2.10での携帯UI変更に伴う変更点
- tableタグを使用するようにした
- (!DoCoMo以外)文字サイズ変更にCSSを使用するようにした
- QVGAサイズで最適に見られるレイアウトにした
- h_home, f_homeなど一部ページ内に画像を表示するようにした
- ページサイズが大きくなった(内容によっては12KBを超える)
OpenPNE2.10以降の推奨機種
- 【各キャリア共通】
-
- ブラウザサイズ220x220以上(QVGA端末)
- 表示可能なページサイズが15KB以上(ただし画像は除く)
- 【DoCoMo】
-
- iモード対応HTMLバージョン6以上
- 902i,903i,904i,905i,702i,703i,704i,D851iFM,F882iES,N601i,D800iDS,F883i,F883iES,F801i
- iモード対応HTMLバージョン6以上
- 【au】
-
- WAP2.0以上
- CDMA 1X WIN全機種(ただしW21Hは除く)
- CDMA 1X A550xシリーズ以降
- WAP2.0以上
- 【SoftBank】
-
- 3GC端末(ただし802SE,NOKIA663,702sMO,702MOは除く)
参考:推奨端末リスト(最終更新:2008/1/16)
セキュリティ対策
- *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それぞれに設定できる
携帯版については、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
- 招待状発行時及び新規登録時に画像認証を挟むようにしている
設計ルール
コーディングルール
- インデント、空白などについてはPEARの標準コーディング規約に準拠する http://pear.php.net/manual/ja/standards.php
コア設計
カスタマイズアドバイス
MasterPNE
SlavePNE
ポイント実装
小窓
OpenPNEAPI
OpenPNEに用意するAPI
(OpenPNE内部の情報を外部に提供する)
OpenPNEAPIの方針
OpenPNEでは、APIを新規に作成する事よりも、なるべく既存のAPIの仕様を利用する方針をとります。
- 理解しやすい
- 十分にテストされている
- すでにライブラリを作ってくれている
- XMLRPC
- RSS
-
- OpenPNEの更新情報を認証付きRSS情報として配信
仕様案
ユーザーごとにカスタマイズされたRSSを取得する方法は
- http://sns.example.com/?m=api&a=rss&t=friend_diary
- HTTPS通信
- メソッド GET
- ベーシック認証でメルアド、パスワードを渡す
結果はRSS形式
OpenPNEが取りに行くためのAPI
- RSS
-
- 外部BLOG情報はRSSを通じて取得している
- AmazonWebService?
-
- 現在OpenPNEのレビューはAWSを通じて取得している
- AWSプロトコルに合わせてくれれば、どんなレビューでもOpenPNEから取得できる
- 現在OpenPNEのレビューはAWSを通じて取得している
- XMLRPC
- OpenPNEブランクボックス(仮)用
- メソッド案
- エントリポイント
- メソッド
- POST
- リクエスト形式
- 呼び出し対象target_id 呼び出し元page_name
- レスポンス書式
- BODY(HTMLタグ)
- サニタイズを行うかどうかは、サイト管理者が決定する。
- デフォルトでは行う設定