web-dev-qa-db-ja.com

ユーザーがブラウザでコードを編集できないようにするにはどうすればよいですか?

説明文

Node.JSアプリケーションを設計しています(より完全なWebサイトのようなものです)。アプリは5つのJavaScriptファイルを送信し、<script>タグを一緒にリンクします。

質問

ユーザーと攻撃者が自分のコードをピアリングして編集するのを防ぐにはどうすればよいですか

  • 例は次のとおりです。

    • CtrlShiftI

    • Devtools、gotoSourcesで、編集するファイル(つまりindex.html)編集を記述

    • 押す CtrlSライブ編集が発生します

prevent上記の例が発生しません...可能ですか?


これが私が思ったことです:

別のクライアント側JavaScriptファイルprevent_keys.jsを作成します

それは聞きます CtrlShiftI

trueが返された場合(つまり、キーが押された場合)、キーはlogになります。

ただし、ユーザーがDevtoolsを直接使用することを妨げるものではありません。

11
Edwin Pratt

文字どおり、ユーザーが送信しているコンテンツにユーザーがアクセスして変更することを防ぐことはできません。ブラウザー、またはブラウザーが使用するブラウザー、またはブラウザーが実際にソースコードをダウンロードしているかどうかを制御することはできません。他の人のデバイスでコードを実行しています。このデバイスの完全性について何も想定してはいけません。

公開したくないコードがある場合は、ブラウザに送信しないでください。代わりに、ブラウザがシークレットコードを実行するサーバーにリクエストを送信できるようにします。

具体的な例として、クライアントでパスワードをチェックしないでください。クライアントは、常に「パスワードが正しい」ことをサーバーに通知するように変更できます。代わりに、信頼できるサーバーで認証を行う必要があります。

35
amon

できません。コンピューティングの基本的なルールの1つ:クライアントを信頼できない。あなたが考えているどんな賢い計画でも、私がクライアントを制御しているなら、私はそれを回避することができます。

23
Philip Kendall

コードを変更したくないのですか?

セキュリティ?信頼?営業秘密?

次に、コードを送信せず、クライアントにリクエストを送信させ、結果を返します。プライベートな結果や特権的な結果ではないかもしれませんが、多くのUIでは完了だけで十分です。

独自のコードのわずかに変更されたバージョンはあなたの収益を損なうので?

コードオブスキュラー、ネームマングラー、および簡単なコードセグメントを使用します。

これらのテクニックは、実際のスキルレベルと、Webサイトのわずかなバリエーションを作成するために必要なツールのレベルを引き上げます。これらの手法を使用すると、コードが遅くなり、興味深い意味のないバグやエラーメッセージが発生する可能性がありますが、適切なツールやスキルを持った人がそれでも解決できることに注意してください。だからそれが価値があるかどうか本当に考えてください。結局のところ、誰もが実際に同じコードを書くだけでした。

2
Kain0_0