私はウェブサイト(jQuery + .NET / C#)を開発しましたが、90%準備ができています。公開する前に、私は真実に直面することを決心し、コードが完全にハッキングされていないことを認めました。正直なところ、それはほとんどハックセーフではありません。これは、私がいくつかの悪いWebプログラミングの習慣を実践しているためです(サーバー側にシェル化する代わりに、クライアントスクリプトに過度に依存するなど)。
もっと正確に言うと、私は推測するjQueryを使いすぎていて、今ではすべてのWebメソッドが.jsファイルで公開されていることがわかります。私は縮小して難読化しましたが、それは決心した詐欺師が私のすべてのものを手に入れることを妨げるものではありません。それが1つのポイントです。
もう1つの問題は、データベースから大量のデータを返すWebメソッドがいくつかあるという事実です。機密データではありませんが、私のシステムが生成するいくつかの優れたデータであり、外部のWebサイトからそれを呼び出して、それが彼らの資料であるかのように表示したくありません。
私が考えた解決策の1つは、サーバー側ですべてのhtmlを生成し、それを.jsに返し、それをそれぞれの要素に追加することでした(このようにして、それ以外のすべてのインテリジェンスを非表示にします)が、すべてを解決するわけではありません私が上で関連した問題。
だから私の質問は...ASP.NETコントロールを使用してすべてを書き直す方が安全だと思いますか、それとも私が持っているコードを使用して(Webメソッドへの外部呼び出しを回避するなど)本当に安全にする方法はありますか?
コードを見ずに意見を述べるのは難しいことは知っていますが、それは巨大です!そして、それは私が言ったことのすべてです(クライアントスクリプトが多すぎて、サーバー側が少ない)。
前もって感謝します。
2 に答える
まず、サーバーサイドで、どのドメインがバックエンドを呼び出しているかを確認できます->許可されていないドメインを拒否します。(このチケットを確認してください)
javascriptの魔法を減らすために、あなたが言ったようにロジックをバックエンドに移動することができます。
たぶんあなたのjavascriptコードを保存するためのいくつかのトリック(これをチェックしてください)
完全にハッキングに対して安全なサイトが必要な場合は、がっかりします。あなたはそれを可能な限り難しくすることができます。
これは、サーバー側で処理されてからクライアントに提供されるサイトで最も簡単です。しかし、すべてをサーバーに移動しないこともお勧めします。結局、サーバーは、サーバーに対して行うすべての要求を処理する必要があるからです。
私は、すべてのデータ提供および評価ロジックをサーバー側およびレンダリングにすること、および簡単な処理ロジックをクライアント側にすることが「最も簡単」であることを経験しました。したがって、最小限のセキュリティリスクで両方のテクノロジーの長所を組み合わせます。たとえば、AJAX-Callを実行してデータを提供した後(必要な場合でも)、success:
またはfailure:
、およびafter:
または同様のキーワードを使用して、レンダリング、更新、および処理ロジッククライアントを呼び出すことができます。
いくつかの新しいことを試してみてください。すべてを1つのテクノロジー/プロセスに移行する場合は、このプロセスの欠点を理解する必要があります。物事を分割します!