2015-11-04 24 views
1

我正在編碼一個php arrayjson格式,它有一個表中的數據。 我json_encode產生與真實列名導致的是table.I想在php側使用真實column名和後編碼爲json格式,我會想使用一些其他自定義名稱,這樣,如果在.js文件中的一些用戶檢查對我來說不會有任何問題。下面的代碼是json_encode的結果。在json_encode時間內,是否可以隱藏表中真實的列名?

現在是什麼: -

{"result":[{"pals_id":"20","from_user":"hancy061","to_user":"hari061","username":"hancy061"} 

我想要什麼: -

{"result":[{"pid":"20","fu":"hancy061","tu":"hari061","un":"hancy061"} 

雅,沒有任何需要顯示用戶的列名,似乎不安全too.You傢伙可以看到我想要的json_encode格式是我想要的。是不是有可能從php這邊?我的意思是在php這邊編碼arrayjson的格式我們可以先定製那些列的名稱嗎?

回答

3

您無法安全地替換客戶端上的這些列,因爲它以某種方式可供用戶使用。如果你想讓用戶永遠不知道你的列是如何命名的,你應該在服務器端完成這一操作。
最常見的方法是使用SQL別名。

在你的PHP改變你的SQL查詢到以下幾點:

SELECT pals_id AS pid, from_user AS fu, to_user AS tu, username AS un FROM YourTable ... 

然而,這是一個security through obscurity並沒有提供任何安全性。
如果您有SQL注入漏洞,那麼黑客將能夠從系統表或SELECT *查詢您的數據結構。

+2

通過默默無聞的安全性是無用的。如果他們可以在服務器上執行查詢,那麼知道列名是完全沒有區別的。爲了您自己的簡單性,保持模型關係相同。 – Ohgodwhy

+0

它做了我的工作偉大@yeldar兄弟:)感謝您的答案.Ya我會照顧'SQL注入',但現在我的列名是完全定製,看起來比以前安全。 –

1

你想編碼之前一樣,你可以手動設置數組鍵的格式爲:

foreach ($result as $ind => $r) { 
    $result[$ind] = [ // For PHP Versions < 5.4 use 'array(' 
    "pid" => $r['pals_id'], 
    "fu" => $r['from_user'], 
    "tu" => $r['to_user'], 
    "un" => $r['username'], 
    ]; // For PHP Version < 5.4 use ');' 
} 

然而,你將不得不扭轉這一點,如果數據是從客戶端發送到服務器更新或什麼的。

如果需要,那麼你可以設置一個地圖在兩者之間切換。

相關問題