2016-03-30 16 views
0

まあ、私は非jQueryのAjaxの機能を持っている:編集可能なJavaScriptとAjaxを

function callAjax(){ //will be sent to node server 
    var xmlhttp; 
    // compatible with IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function(){ 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
     canAjax = true; 
     //do something 
     } 
    } 
    xmlhttp.open("GET", "string", true); 
    xmlhttp.send(); 
} 

と、それを呼び出す関数:

function a(){ 

    if(mouseIdle && canAjax){ 

    callAjax() 
    } 

} 

これは、私は私のクライアントに与えるAPIの一種であります次のようになります。

<script src = "mysrc"> 

問題は、誰でも簡単に削除できます(クライアントを含む)。私は理解できませんそれを編集不能にする方法、または少なくとも予防する方法。私はちょうど私のJavaScriptコードが内側から触れることができないようにしたい、どのようにそれを行うことができますか?

+0

JavaScriptはクライアント側であり、制御できません。あなたのコードをうっとりさせるとあなたを助けることができます。 – rafaelcpalmeida

答えて

2

クエンティン氏によると、クライアント側でJavaScriptを制御することはできません。それはウェブの仕組みだけです。

トークンを使用して簡単な認証システムを実装できます。

あなたのトークンは、現在の時間のSHA256ハッシュのようなブルー​​トフォース攻撃を阻止するためには、推測が困難なものでなければなりません。 SHA256のための空のハッシュは以下の通りです:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 

次に、あなたのデータベース(MongoDBは、MySQLやその他)で、このトークンキーを救うことができると、あなたは彼らが作る各要求に自分のトークンを送信するようにクライアントを義務づけるする必要があります。

この後は、そのキーの使用割当を検証し、配信するかどうかを決定するだけです。

+0

ニースの答え。 btwユーザーがウェブサイトの使用を中止したら、どのようにトークンをDBから削除する必要がありますか? – user1938653

+0

@ user1938653 - エンドポイントへのアクセス権を持つトークンと使用量のクォータの大きさを制御するための、あなた自身のための本当にシンプルなバックオフィスを構築することができます – rafaelcpalmeida

0

できません。

クライアントに送信するものは、エンドユーザーが編集したり、複製したり、編集したり、別のWebサイトに配置することができます。

Ajaxエンドポイントへのアクセスを制限する場合は、保護をサーバーに置く必要があります。たとえば、IPアドレスリンクレート制限があります。

+0

もう一つの方法は、IPアドレスに関係なくそのクライアントの要求を制御できるように、トークンを使って簡単なauthメソッドを追加することです。 – rafaelcpalmeida

+0

@rafaelcpalmeida - エンドポイントへのアクセスを特定の人に制限できるかどうかにかかっています、問題は私に実現可能な印象を与えていない。 – Quentin

+0

Ajaxリクエストや一般的なリクエストを制御するには、どのような方法が推奨されますか?私は、クライアントがリクエストで私を過信させないようにする必要があります。 – user1938653

関連する問題