0

各 Web ページで使用している firebug を無効にしたい。ときどき、UI ウィジェットに重要なキーまたは ID を埋め込みました。サーバー側からのいくつかのメソッドは、これらのキーを処理に使用します。だから、誰かがfirebugで編集できます。これにより、データベースのデータが誤って更新されたり、Web ページに誤ったデータが表示されたりする可能性があります。セキュリティ オプションについては、ブラウザの firebug やその他の開発者ツールの使用を無効にしたいと考えています。GoogleChromeのホームページのように、そこで firebugを開いたときに、次のようなエラー メッセージを表示したいと考えています。

Chrome エラー アラート ボックス

どうすれば好きになれますか?例: JavaScript を使用してフォーム データを検証したい、またはJQuery フォーム検証を使用するなどして、 それで問題ありません。しかし、firebug を使用してエラー メッセージの要素を削除すると、このフォームが有効になります。本当に、firebug だけでなく、他の開発者ツール、アドオン、プラグインも意味します。私の質問の主なポイントは、それらを無効にする方法です。Chrome ブラウザのホームページ プロセスの FireBug と検証フォーム インスタンスは、私がやりたい例です。

4

4 に答える 4

7

TL;DR そのような方法でセキュリティを実現する方法はありません。クライアントを信頼することはできません。

結局、ブラウザーは HTML と JavaScript ファイル (および画像と CSS など) の束をダウンロードし、HTML と CSS の表示方法と実行方法に関する仕様に従って、それらをウィンドウで実行/表示するだけです。 JavaScript。インターネット ブラウザは、ドキュメントをダウンロードするようにファイルをディスクに保存するわけではありませんが、実際には違いはありません。( 「ドキュメント」フォルダでなく、ファイルをダウンロードしています) HTML マークアップとは対照的に、ユーザーが適切にフォーマットされたページを表示するのを便利にするために、Web を閲覧するコンテキストですべてを実行しているだけです。しかし、これらのファイルは単なるファイルであり、ブラウザ コンテキストの外部に存在する可能性があります (つまり、読み取りと編集が可能です)。

したがって、JavaScript ファイルの 1 つになんらかの種類の秘密鍵がある場合、Firebug Lite を禁止しても秘密鍵へのアクセスが妨げられることはありません。curl や wget などのツールを使用してそのファイルをダウンロードテキストエディターで読み取ることができるからです。ブラウザで行うことはすべて、 curlを使用して「手動で」行うことができることに注意してください。

JavaScript を使用してページで Firebug Lite を禁止する方法があったとします。その特定のコードを実行しないことを除いて、ブラウザーとまったく同じように動作する何らかのカスタム ブラウザーをいつでも使用できます。ブラウザーがページに提供されたすべてのコードを実行するのは慣例ですが、技術的に選択的であることを妨げるものは何もありません。(そして、多くのブラウザ拡張機能は実際にそれらを選択的にします.AdBlockが思い浮かびます)

誤解しないでください。フォームのクライアント側の検証は便利で便利ですが、サーバー側の検証を置き換えるものではありません。すべてのクエリに対して (通常は Cookie を使用して) ユーザーの ID を検証し、そのユーザーが適切な権限を持っている場合にのみクエリを実行するサーバー側のコードを記述する必要があります。(もちろん、入力値の有効性も確認する必要があります)

于 2013-09-05T16:42:02.357 に答える
3

Let's have an actual answer to this question, as in, how is it that some pages cannot run Chrome extensions. Hardcoded reasons:

  1. There is a specific exception that Chrome Extensions cannot touch Chrome Web Store pages. In the Chromium source code, that would ChromeExtensionsClient::IsScriptableURL. Quoting:

    // The gallery is special-cased as a restricted URL for scripting to prevent
    // access to special JS bindings we expose to the gallery (and avoid things
    // like extensions removing the "report abuse" link).
    

    One can override this restriction by a command line flag: --allow-scripting-gallery

  2. The exception in the question itself: New Tab page is not allowed for content scripts, since it's on a chrome:// URI scheme. In the source code, you can see ChromeExtensionsClient::GetPermittedChromeSchemeHosts:

    // Regular extensions are only allowed access to chrome://favicon
    

    Extensions can override a new tab page, but not inject their scripts into one.

    It can be overridden with a Chrome flag.

I'm leaving this as a community wiki, so people can freely add to this answer.

As noted in other answers, disallowing extensions on regular pages is an arms race one cannot win.

于 2014-06-15T09:02:29.723 に答える