2014-01-05 28 views
1

我正在使用ASP.NET的通用處理程序(ASHX文件)製作可將數據返回到移動應用程序等的服務器端頁面。這些數據中的一部分是私密的。截至目前,我正在使用JSON & POST方法。如何使用ASHX處理程序進行正確的身份驗證

但是,任何人都可以訪問一個客戶端代碼(例如移動應用的代碼),將能夠看到哪些關鍵字有發送到「不可預知」的網址,以便進行更改或得到數據。

我已經做了好幾個小時的研究,但沒有找到驗證了一個發送JSON請求確實是經過批准的移動應用程序以適當方式。

發送請求到服務器AJAX的實施例:

function login() 
{ 
    var jsonParam = { name: "test", aname: "secret", pass: "1234", type: "login" } 
    $.ajax({ 
     url: "AppDatabase.ashx", 
     type: "post", 
     data: JSON.stringify(jsonParam), 
     dataType: "json", 
     contentType: 'application/json; charset=utf-8', 
     async:false, 
     success: function (response) { 
      alert(response.userEmail); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Status: " + textStatus + "\r\n" + "Error: " + errorThrown); 
     }  
    }); 
} 

接收在服務器端的請求的示例:

public void ProcessRequest (HttpContext context) { 
    context.Response.ContentType = "application/json"; 
    JavaScriptSerializer jss = new JavaScriptSerializer(); 

    context.Request.InputStream.Position = 0; 
    string json; 
    using (var reader = new StreamReader(context.Request.InputStream)) 
    { 
     json = reader.ReadToEnd(); 
    } 

    Dictionary<string, object> dict = jss.Deserialize<Dictionary<string, object>>(json); 

    if(dict["aname"].ToString() == "secret") 
    { 
     // The best security I have right now is a "secret keyword" within the request 
    } 
} 
+0

你的意思是你從客戶端發送祕密關鍵字? –

+0

@Furqan是的,還有呢? – Kfirprods

+0

如果你想停止任何其他第三方應用程序訪問URL,那麼這是不可能的。一旦URL被公開,任何人都可以訪問,唯一的辦法就是通過實現用戶認證。但是,如果第三方擁有憑據,則仍然可以訪問資源。 – sallushan

回答

0

您當前的方式是非常危險的。

您可以使用需要用戶名&密碼進行身份驗證另一頁(爲前。使用Session),然後讓客戶端請求您的ashx文件和你的ASHX應檢查Session進行身份驗證。

+0

不知道我得到這個。我怎樣才能做到這一點?我如何甚至可以將一個會話分配給處理程序上的客戶端? – Kfirprods

+0

哦。我想我得到你。你說的是,將會話附加到登錄的任何發件人,然後每當收到登錄以外的請求時,檢查會話的有效性。 所以對於一個獲得他人的信息,他們會必須知道的名稱和密碼。 我還是想聽到的話,任何人有如何使它雖然獲得更多的建議。 – Kfirprods

0

只是一個想法:

都是客戶端(如移動應用)「你們的」,或者這是否意味着某種API(對於x客戶端)?

無論哪種方式,也許值得看看JWT?這個想法是「有效載荷」(數據)是,簽名爲(例如HMAC SHA-256)並且具有對「重放」的保護。

這樣,你不只是看auth部分 - re:兩端都需要驗證數據,所以兩者都可以確保這些數據來自「正確的來源」並且(仍然)有效。

Hth ...

+0

移動應用程序是我的。我會看看智威湯遜,謝謝。 – Kfirprods

相關問題