1

ご存知のように、Web アプリケーションは JavaScript を使用して関数を DOM 要素にアタッチし、ユーザーがアプリケーションを操作できるようにすることがよくあります。

しかし、一部の Web アプリケーションはこれらの機能をグローバル空間で公開しているため、ブラウザー コンソールで実行できることに驚きました。これは脆弱であり、悪い習慣と見なされますか?

たとえば、これらの公開された関数を使用することで、スクリプトを作成してコンソールで実行し、予想外の創造的なことを実行できる可能性があります。

このため、コンソールで自分の Web アプリケーションへのアクセスを可能な限り隠すよう常に努力する必要がありますか? 私がそうすべきであることは明らかですが、私はまだ Web 開発に非常に慣れていないため、間違っている可能性があります。

4

1 に答える 1

3

これは主に意見に基づく質問であり、おそらく SO の形式には適していないと思います。でも答えたいのでCWで答えます。

グローバルの作成を避ける主な理由は、コードのセキュリティやプライバシーではありません。クライアント側の JavaScript コードは公開されています。あなたのコードが何をするのか知りたい人は、スクリプトをダウンロードして見るだけで知ることができます。スクリプトを難読化したとしても、難読化を解除して再び読めるようにする優れたツールがあります。Google の Closure Compiler は、特に高度な設定を使用すると、これが非常に困難になりますが、実行していることのほとんどは理解できます。

いいえ、これ以上グローバルを作成しない主な理由は、グローバル名前空間がすでに非常に混雑しているためです。そのため、さらにグローバルを作成すると、自分のスクリプトと含めたい他のスクリプトとの間で競合が発生するリスクにさらされます。グローバル名前空間は、ブラウザーで特に混み合っています。ブラウザーは、すべての要素のプロパティを含むあらゆる種類のものをそこにダンプするためですid(ほとんどのブラウザーでは、プロパティ名はidで、値は要素です)。

ベスト プラクティスは、グローバルまったく公開しないことです。グローバルが必要な場合、必要なものをすべて配置するオブジェクトを 1 つだけ用意してください。

于 2013-08-23T11:08:30.887 に答える