OpenPNE仕様メモ

OpenPNEの正式な仕様書が出来るまでの仕様メモです。

PC版の推奨環境

OpenPNE2.12以降の推奨機種

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変更に伴う変更点

  1. tableタグを使用するようにした
  2. (DoCoMo以外)文字サイズ変更にCSSを使用するようにした
  3. QVGAサイズで最適に見られるレイアウトにした
  4. h_home, f_homeなど一部ページ内に画像を表示するようにした
  5. ページサイズが大きくなった(内容によっては12KBを超える)

OpenPNE2.10以降の推奨機種

【各キャリア共通】
  • ブラウザサイズ220x220以上(QVGA端末)
  • 表示可能なページサイズが15KB以上(ただし画像は除く)
【DoCoMo】
  • iモード対応HTMLバージョン6以上
    • 902i,903i,904i,905i,702i,703i,704i,D851iFM,F882iES,N601i,D800iDS,F883i,F883iES,F801i
【au】
  • WAP2.0以上
    • CDMA 1X WIN全機種(ただしW21Hは除く)
    • CDMA 1X A550xシリーズ以降
【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
招待状発行時及び新規登録時に画像認証を挟むようにしている

設計ルール

コーディングルール

コア設計

カスタマイズアドバイス

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から取得できる
XMLRPC
  • OpenPNEブランクボックス(仮)用
  • メソッド案
    • エントリポイント
    • メソッド
      • POST
    • リクエスト形式
      • 呼び出し対象target_id 呼び出し元page_name
  • レスポンス書式
    • BODY(HTMLタグ)
    • サニタイズを行うかどうかは、サイト管理者が決定する。
    • デフォルトでは行う設定