2016-11-18 69 views
1

這篇文章是更多的question比實際issue與代碼。 所以,當我不得不從database顯示例如項目列表很長一段時間,我用來直接在HTML顯示(表primary key)的Id像這樣的例子:Ajax請求,數據庫和安全

<div id="1"></div> 
<div id="2"></div> 
<div id="3"></div> 
<div id="4"></div> 

所以像這個時候我想做當前clicked項目的Ajax請求時,它很容易,因爲我剛剛從html這樣檢索attribute

$.ajax({ 
    url: '/api/Item/'+$(this).attr('id'), 
    type: 'GET', 
}) 
.done(function() { 
    console.log("success"); 
}) 
.fail(function() { 
    console.log("error"); 
}) 
.always(function() { 
    console.log("complete"); 
}); 

這只是瀏覽產品後的很多網站,我注意到沒有人直接在HTML顯示primary key(Id)。但不知何故,他們仍然可以使用點擊itemIdajax請求API。所以我的問題是:我怎樣才能獲得當前點擊Id做我的ajax請求,而不顯示任何地方。我的意思是這些網站如何設法做到這一點?也許他們從server得到list,他們在client中使用呢?但它仍不能解釋他們如何設法獲得current點擊Id

欣賞你的想法和建議。網站的

例:https://www.toneden.io/ 在右下角連接時,聊天看network和網絡瀏覽器console

+0

沒有一個例子,它真的很難弄清楚哪個網站做什麼,以及如何? – Manikiran

+0

@Manikiran看到我更新的問題(在底部,你需要有一個帳戶雖然) – zaarr78

+0

它被髮送,但由於javascripts被縮小,你無法輕易弄清楚。 – Manikiran

回答

0

要得到服務器的響應,你必須要求一些東西。在這種情況下,你說我不想在html端顯示primary key任何軟件,並從服務器獲得結果。我對此的建議,在php>您可以使用二進制數代替主鍵並將其轉換回數字並使用acc。達到要求。示例: - decbin()和bindec()

0

顯示一個id沒有任何問題。在我只想引用DOM來響應服務器推送更新的情況下,我附加了數據庫ID,例如id="game_1281"。另一種選擇是使用像這樣的數據屬性:data-id="1281"。這使您可以在將它發送到服務器之前毫不費力地解析值。

引用唯一的ID不是安全問題。只要確保您正在進行適當的服務器端檢查,以確保基於各種限制和特權可以爲該用戶採取所採取的措施。

+0

但是有可能使id在HTML中不可見。我的意思是如果我檢查元素,我可以在沒有看到id屬性的情況下點擊div。 – zaarr78