2017-12-02 1 views
2

私はフロントエンドとバックエンドの両方で一般的なユーザー認証と何か関係がありません。 Angular 2/5でアプリケーションを構築しています。私はthis tutorialをJason Watmoreによって見つけました。自分のニーズに適応しようとします。このコメントでは、フロントエンドを安全にしたいサイトでは、フロントエンドの別のアプリで認証を行い、ユーザーがフルアプリにリダイレクトすることをお勧めしますフロントエンドアプリケーションが安全でないという理由は、ユーザーがルートガードなどで保護されているルートを表示するために変数を変更する可能性があるからです。そのデータはバックエンドからはまだ安全ですが、ユーザーが入力したデータをどのように分析するのかなど、一般に知らせたくない機能がフロントエンドにあります。フロントエンドアプリケーションのセキュリティ

私の質問は、フロントエンドアプリケーションの確保に関して、これは不可能な絶対的な真実ですか?それは理にかなっていて、私はそれが真実であることを知っていますが、警戒されたルートを見ることを少なくとも困難にする方法があるかどうかは疑問でした。 (ルートガードがトークンが有効であるかどうかサーバーに問い合わせるのと同じように...しかし、あなたはただtrueを返すように関数を変更できますか?ここに?ユーザがログインした後でサーバが利用できるようにするモジュール/ルートを構築することは可能でしょうか?

+0

クライアント側のコードにはセキュリティはありません。それは、ユーザによってわかりやすく、改ざんされ、改ざんされる可能性がある。 lazy loadngはどのような目的で解決するのですか? – estus

+0

遅延ロードされたルート/モジュールがサーバによって保護されていて、認証後に特権を持つユーザだけが使用できる場合は、非特権ユーザによってそのルート/モジュールを改ざんすることはできません...しかし、わかりませんこれがまったく標準であれば。私はそれを考えている最初の人になることはできません。 – BBaysinger

+0

再び、セキュリティはありません。ユーザーが(他人のブラウザキャッシュから) '保護された'スクリプトを取得すると、そのスクリプトを改ざんすることができます。どのようにそれがアプリに何らかの形で影響を与えると期待していますか?すべてのアクセス制御はAPIで実行する必要があります。サーバー側の一部のスクリプトへのアクセスを制限することはできますが、通常の静的ファイルとしての提供やCDNへの展開が制限されます。コードを(簡単に)改造して盗まれたくない場合は、.mapファイルへのアクセスを制限するのが最善の方法です。 – estus

答えて

1

認証されていないユーザーから一部のフロントエンドコードを保護しようとするのは非常に合理的な考えであり、実際には遅延読み込みが役立ちます。

いくつかの考え:

  • 唯一の潜在的な外部の攻撃者のために分析するために、このようなコードを不可能にすることによって、セキュリティを強化するん特定のフロントエンドファイルをダウンロードするには、特定の(認証済み)のユーザーを許可します。したがって、資格情報を持たない人は、アプリケーションのこれらの部分でXSSなどのものを見つけるのが難しくなります。これは実際のセキュリティ上のメリットです。
  • 難読化によっても同様のことが達成できますが、認証されていないユーザーには決してコードを渡すことは決してないでしょう。
  • これを行うと、一般的に開発(プロセス)がかなり複雑になり、複雑さは通常、セキュリティの良い友達ではありません。
  • 多くの攻撃者は外部ではありません。機密情報をクライアントサイドのコードに入れることは良い考えではなく、ビジネスロジックは非常に敏感である可能性があります。アプリケーションの有効なユーザーは誰でも "攻撃者"になる可能性があり、クライアント上にある場合はこのコードを持つ必要があります。
  • したがって、このようなビジネスロジックをサーバーに配置することをお勧めします。
  • 最終的には、あなたが取るべきリスクに基づいています。考慮する必要がある要因には、サーバー上にすべてを置く価格(リソースの量)、この情報が敵に失われた場合の潜在的な損失、起こっている可能性(つまり、信頼できるユーザーが5人いるか150000未知のもの)、そしてあなたのリスクの食欲。
0

フロントエンドコードとバックエンドの違いは、フロントエンドがWebサイトを訪問しているコンピュータで実行されているのに対し、バックエンドは通常数百マイル離れたサーバーで実行されることです。フロントエンドコードの場合は、ユーザーのコンピュータ上にあることを意味します。つまり、アクセス権があります。あなたは卑劣で、知識のある "ハッカー"だけが実際に重要なものを見ることができるようにしますが、フロントエンドのコードを隠すことは不可能です。彼らのコンピュータはそれを必要とするので、ユーザはそれにアクセスすることができます。

+0

フロントエンドとバックエンドのコードの概念に精通しています。セキュリティ/認証を一度も統合していない人物と同じように、私はそれについて考える必要はありませんでした。しかし、ええ、これは完全な意味があります。ありがとう。 – BBaysinger

+0

私は遅延読み込みに関する質問に追加しました。あなたがバックエンドでそのモジュールを保護できるならば、遅延ロードされたモジュールであなたのアプリケーションの一部を保護できるようです。 – BBaysinger

関連する問題