バックボーンアプリの開発中に直面する可能性のあるセキュリティリスクは何ですか?誰かがそのようなリスクを軽減するためのベストプラクティスを教えてもらえますか?
ルーターの場合と同様に、すべてのユーザーが呼び出されているサービスを見つけることができます
バックボーンアプリの開発中に直面する可能性のあるセキュリティリスクは何ですか?誰かがそのようなリスクを軽減するためのベストプラクティスを教えてもらえますか?
ルーターの場合と同様に、すべてのユーザーが呼び出されているサービスを見つけることができます
バックボーン アプリやその他のクライアントを保護する秘訣は、クライアント側の検証に依存しないことです。必ずサーバーで検証してください。
たとえば、バンキング アプリを構築している場合、Backbone を使用してユーザーの口座間で 100 ドルを送金し、モデルの更新として新しい口座残高をサーバーに送り返すことはありません。代わりに、$100 を送金するというユーザーの意図をサーバーに送信し、サーバーが新しい残高を返送するようにします。このようにして、サーバーは、アカウント間でそのような送金を行うためのユーザーの承認を安全に判断し、十分な資金が存在するかどうかなどを判断できます.
クライアント側の検証は、ラウンドトリップを減らし、ユーザーにすぐにフィードバックを提供するのに役立ちますが、アプリを保護する方法と考えるべきではありません。たとえば、サーバーに送信する前にクライアントで電子メール アドレスの形式またはパスワードの強度を検証する (サーバー側で再度検証する必要があります) は、クライアント側の検証の良い例です。
Web サービスに関しては、それらを保護するさまざまな方法があります。たとえば、HTTPS またはトークンベースの認証を使用できます。
もう1つの問題は、公開するデータが多すぎることです。例:(モデルにデータを入力するために)完全なユーザーレコードを返すのではなく、アプリケーションに実際に必要なデータのみを返します。
(ハッシュされた)パスワードがクライアントに送信された例を見てきました。
バックボーンアプリを保護する際に考慮すべきことは、アプリ自体へのアクセスです。
ユーザーがログイン/パスワードを入力する認証ページを作成し、認証が確認されたら、cokkieセッションIDを設定します。
たとえば、メインビューがhttp://mydomain.com/appでレンダリングされている場合は、Cookieの検証を使用して「/app」へのアクセスを保護する必要があります。
バックエンドがnodejsの場合の例:
app.get('/app', function(req, res, next){
if(!loggedIn(req,res))
sendError(res);
else
next();
});
loginは基本的に、CookieにsessionIDがあるかどうかを確認します。はいの場合はアプリにアクセスできます。そうでない場合は、「不正アクセス」メッセージがユーザーに表示されます。
前述のように、クライアント側の検証は重要ですが、サーバー側の検証を使用してそれを強化する必要があります。
WebサービスのHTTPSも重要です。