2017-06-20 3 views
0

私は、JavaScriptのAJAXでウェブサイトを作るのは全く新しいです。私は私のウェブサイト上のすべての経験にFacebookのような1つのドメインを提供したいので、私はjavascript AJAXを使ってすべてのページを変更する方法を作りました。最初に、私のウェブサイトにアクセスすると、ログインしてからメインページに戻り、ページを変更する方法をトリガーするボタンをクリックしていくつかのメニューに行くことができます。ユーザーログイン後にAJAXでユーザーを確認するにはどうすればよいですか?

私が直面した問題は、最近誰かがコンソールにJavaScriptコードを入力してTumblrのすべての写真をクリックするのではなく、そのすべてをクリックするのを見たことがあります。アイデアは私の頭を打つ。

私のウェブサイトのすべてのページ変更方法は、ログインせずに呼び出すこともできます。誰かがログインせずにページを変更するjavascriptコードをコンソールに入力し、ページの内容を見ることができます。

最初のアイデアは、この状況を防止するために私の頭に来たのですが、id/pwをサーバに送信するたびに、サーバがリクエストを取得するたびに、サーバはid/pwでブラウザを割り当てますページを変更する。例えば、ユーザがメニューAに行くことを望むとき、彼(または彼女)は彼/彼女のid/pwをメニューAの内容を見るために送らなければならない。

これはとても悪い考えだと思った。私が推測するように、サーバが常にidとpwをチェックしなければならないとき、サーバのCPUに過負荷がかかると思います(申し訳ありませんが、私はサーバのCPUとプロセスについてよく分かりません。だから私は毎回id/pwを送信せずにユーザーとその要求を検証する別の方法があると思います。

誰でも知っていますか?または、すべての投稿リクエストでID/PWをチェックする必要がありますか?

答えて

0

を、あなたはクロスサイトスクリプティングについて話しています。 -

クライアント側のユーザーがあなたのウェブサイトにスクリプトを挿入し、さまざまなものを変更するために使用される、クロスサイトスクリプティングと呼ばれるものです。まずは、いくつかのドキュメントを指しておきましょう。それ。このようなことに対処するために今すぐ

https://en.wikipedia.org/wiki/Cross-site_scripting

救済措置は以下の通りあります: -

  1. CSRF Token
  2. JWT

それらの両方がやや同じように動作しますがありますに含まれるデータとペイロードの容量と暗号化を含むJWTと私はそれをお勧めします。 これはコミュニティでよく知られている問題で、かなり古いものです。

一方、データベースに保存する前にデータのサニタイズを行うことをお勧めします。誰かが簡単にあなたのサイトにいくつかのJSを入力することができますし、すぐに破損することができます。

このSanitizing user input before adding it to the DOM in Javascript

少なくとも最後にではなく、を見てください。 JavaScriptを書く際に、グローバルレベルでの機能の公開をやめてください。グローバル変数と関数の作成を停止し、クロージャを使用します。

(function(){ 
 
var a =10; 
 
var b = 20; 
 
    
 
function add(msg){ 
 
    console.log(msg) 
 
    return a+b; 
 
} 
 
    
 
add("I am calling from Inside the self executing function"); 
 
})(); 
 

 
add("I am calling from outside the self executing function");

は、上記のコードを見てください、それが add()メソッドは外部から呼ばれるようにすることをどのように保護しますか。

ご希望の質問にお答えします。

+1

CSRFはステートフルなアプリケーションで使用されます。この場合はAPIなので、CSRFは使用されません – brunocascio

+0

私はそれを見ていきます。ありがとう! –

+0

私はドキュメントを読んでいて、わかっているように、ハッカーがフォーム、テキストエリアなどでウェブサイトにスクリプトをアップロードすると問題になります。しかし、私が検討しているのは、ユーザーがChromeで「デベロッパーツール」を開き、その関数を実行するためのjavascriptコードを入力するという問題です。グローバルレベルでの機能の停止を止めることで解決できますか?私は理解していることが正しいかどうかを確認したいだけです –

0

はい、ステートレスなシナリオでは、トークンのようなクライアント識別情報を送信し、サーバーで検証する必要があります。パフォーマンスを心配しないでください:)

あなたはJWTに見てとることができます:あなたに答えるためにhttps://jwt.io/

+0

私は他の男が書いた文書を読んで、セッションを使って検証することを検討しています。ありがとう! –

関連する問題