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


11

説明

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

質問

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

  • 例は次のとおりです。

    • Ctrl+ Shift+I

    • ではデベロッパーツール、後藤ソース、(つまり編集するファイルを選択index.html)と書き込み編集

    • Ctrl+ Sを押すと、ライブ編集が行われます

上記の例が発生ないようにしたい...可能ですか?


ここに私が考えたことがあります:

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

Ctrl+ Shift+ をリッスンしIます。

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

ただし、ユーザーがDevtoolsを直接使用することを停止することはありません。


16
ブラウザーで実行されるJavaScriptをだれかが見たり変更したりするのを防ぐことはできません。できません。
jfriend00

7
質問への答えが「できない」という理由だけで、それが否定されるべきであるという意味ではありません。
ラバーダック

1
非常に密接に関連する質問:AJAXフォーム送信時のJavaScriptのみの検証。特に、Webブラウザーからでなくても、サーバーからクライアントから送信されたものと同じように見えるPOST呼び出しを送信する方法の簡単な例で、受け入れられた回答を確認してください。
8bittree

回答:


35

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

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

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


4
「クライアントを修正して、常にサーバーに「パスワードが正しい」ことを伝えることができます。」 libssh
フィリップケンドール

どうもありがとう!ログイン、ログアウト、サインアップのハンドラーを送信していました。サーバー内のルートに変更しました。
エドウィンプラット

23

できません。コンピューティングの基本的なルールの1つ:クライアントを信頼することはできません。あなたが考えている巧妙なスキームが何であれ、私がクライアントをコントロールしていれば、私はそれを理解できます。


2
すべての検証、アップロード、ダウンロード、userAccouts()ハンドラーをサーバーのincludeに移動しました。
エドウィンプラット

1
「クライアントを信頼することはできません」はコインの片側にすぎません。反対側は、「あなたはクライアントの所有者ではありません」と言います。JavaScriptを実行するブラウザーはユーザーのものではなく、ブラウザーを実行するOSはユーザーのものではなく、ブラウザーが実行されるハードウェアはユーザーのものではありません。このようなものの所有者があなたが彼らに送信するデータをどうしようと、それはあなたのビジネスではありませんあなたのクライアントが彼らのものを奪うことを試みないことは敬意の問題です。
cmaster-モニカの復元

2

コードを修正したくないのはなぜですか?

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

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

あなた自身のコードのわずかに変更されたバージョンがあなたの最終的な収益を傷つけているので?

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.