2010-12-26 9 views
0

私はphp/mysqlでソーシャルWebアプリケーションを開発していますが、セキュリティを実装するためのよりよい方法についてお聞きしたいと思います。私は次のようなことを計画しています: - プレゼンテーションレベルでは、自分のデータが読み書きまたは更新される度にデータベースレベルで資格のあるアイテム/コンテンツを見ることができるように制限します私は、その人がそのようなデータの部分とのそのようなやりとりに対する権利を持っていることを確認します。したがって、各アクションには、データベースレベルで別のビューレベル&の2つのセキュリティ層があります。オーバーヘッドが2倍になるのでしょうか?このofcourseのソーシャルネットワークWebアプリケーションでセキュリティをどのレベルで実装する必要がありますか?

は、内部のセキュリティ問題のみで取り扱う。..

答えて

0

状況を処理するための良い方法のように聞こえるが、なぜユーザーがeligebilityのように多くの異なるレベルを持っている必要があります、あなただけではないことを彼らのアカウントにある情報に戻します。

1

私は、セキュリティを少しでも必要とするアプリケーションは、このようにしなければならないと言います。

私たちは、同様の方法で動作するいくつかのアプリケーションを持っています。アプリケーションとデータベースレベルの両方で認可をテストします。その利点の中には、まったく同じセキュリティモデルが適用された同じデータストアを利用する、複数の緩やかに関連するアプリを持つことができるという利点があります。

もう1つの利点は、アプリケーションがpwndの場合にデータベースを侵害することがずっと難しいことです。

これらの行に沿って、アプリケーションがテーブルを直接操作(選択/削除/など)することは許可しません。代わりに、すべてがストアドプロシージャを実行します。すべてのprocはユーザーID(推測不可能)をとり、ユーザーが要求された機能を実行できることを内部的に検証します。そうでなければ私たちは静かに失敗する。副次的なメリットは、SQLインジェクションの影響を受けないことです。

有効なスーパーユーザーアカウントを取得できたとしても、データベースを自己完結して独自の権限チェックを実施できるだけでなく、大きな被害を被るのに時間がかかります。私たちがdbとappの使用状況を積極的に監視していることを考えると、進行中の攻撃を検出して停止させることができるため、あらゆるエクスポージャーを制限できます。

覚えておいてください、彼らがあなたを得るために外に出ないのは妄想だけです。そして、彼らはほとんど常にです。 ;)

関連する問題