Version 8 (modified by 13 years ago) (diff) | ,
---|
TOC(titleindex,heading=リンク,pne,OpenPNEHacks,ChangeLog)?
OpenPNE仕様メモ
OpenPNEの正式な仕様書が出来るまでの仕様メモです。
OpenPNEのセキュリティ対策
- *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準拠にする
コア設計
カスタマイズアドバイス
MasterPNE
SlavePNE
ポイント実装
小窓
使用可能Cmdタグ一覧(Ver2.4.2)
以下のサイトのURLは自動的にコンテンツへと変換されます
- flipclip.net
- grouper.com
- kakaku.com
- video.google.com
- watchme.tv
- ebitv.jp
- youtube.com
リンク CMDHowTo
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タグ)
- サニタイズを行うかどうかは、サイト管理者が決定する。
- デフォルトでは行う設定
ノート
検討中案件
- OpenPNE2.8の次は3.0ではなくOpenPNE2.10とする
- OpenPNE安定版マイナーバージョンアップ中はDB定義とconfig.phpディレクトリ構造を変更しない
- メジャーバージョンアップでは2バージョンアップに1度DB定義変更をする(現在は1バージョンアップ毎)
OpenPNE2.8新機能仕様書
目次
- OpenPNE2.8新機能仕様書
- ファイルアップロード機能
- ポイント・ランク機能
- 携帯登録時の個体識別番号取得機能
- コミュニティイベントの参加人数制限機能
- (携帯版のみ)PC版日記URLの自動リンク設定
- 日記公開範囲設定の一括設定
- 共通コミュニティ機能
- フリーページ作成機能
- 画像のSNS認証
- エントリーポイント
- 小窓機能
- 管理画面のアカウント管理機能(権限レベル変更)
- 退会者情報の転送機能
- 管理者メッセージ送信機能(送信先メンバー指定方法追加)
- メンバーリストのソート機能・ログイン時間でのメンバー絞り込み機能
- (BIZ)人単位でのスケジュール登録機能(グループ単位→人単位に仕様変更)
- (携帯版のみ)登録完了ページにアフィリエイトタグを仕込む機能
- CAPTCHA認証機能(使用可否設定追加)
- 管理画面からのレビュー管理機能
- (PC版のみ)フレンド紹介文表示ページからの紹介文削除機能
- (API)検索結果の件数を取得される機能