2014-10-02 23 views
1

我有一個數據庫,它有一個特定的表「Attribs」,其中包含用戶的屬性列表,如名稱,地址,電話號碼等,每個屬性都是關鍵字。我使用REST API來獲取屬性名稱並填充另一個表。但是,「Attribs」中的鍵正在暴露在API中。直接在API中使用數據庫主鍵值是否安全

例如如果我試圖把它的屬性USER_NAME用戶名,然後我的REST API將不得不像

「USER_NAME」一條線:「ABCD」

是可以安全地暴露這些密鑰或可能造成任何可能的安全問題?

+0

這聽起來很安全。我的意思是,只要這些主要關鍵值應該是保密的。但是你甚至不需要問。可以肯定的是,這裏的安全目標是什麼? – guest 2014-10-02 22:10:10

+0

API被許多人(直接或間接地)用來創建數據。該數據以key:value的形式發送,其中密鑰來自「Attrib」並存儲在其他表「用戶」中。所以Attrib的關鍵是用戶的列名。如果有人嘗試侵入用戶,那會泄漏大量敏感信息。所以我想知道該系統的設計是否提供了可以使黑客工作變得輕鬆的信息。 – Manali 2014-10-03 14:47:34

回答

2

我們沒有足夠的上下文,但沒有,這是一種不安全的做法,OWASP中有關於它的整個部分。 https://www.owasp.org/index.php/Top_10_2010-A4-Insecure_Direct_Object_References這是一個原則,不要直接暴露ID,而是使用和間接層。

影響你的情況是不可評估與您提供的描述,但我會申請原則,如果我是你:)

+0

這主要是適當授權的問題。如果你的授權是完美無缺的,那麼你用來引用一個對象的ID是否可預測並不重要。另一方面,授權不應只基於對ID的瞭解。 – Gumbo 2014-10-03 07:58:20

+0

你爲什麼這麼說?如果auth是完美無瑕的,但你擁有100.000個用戶,並且用戶可以枚舉應該僅由該用戶看到的「ID」,那該怎麼辦?另一件事,數據庫上的可靠ID與**其他問題**一起使用。比方說,有人找到一種寫在數據庫的表上的方法,但他無法閱讀;直接暴露一個ID,就像他可以讀取數據庫一樣,基本上在ID中寫入另一行的內容。或者如果任何人需要數據庫中的已知值來利用漏洞,他會知道存在任何這些ID。 – sc0p 2014-10-03 08:06:43

+0

如果有人試圖破解數據庫,那麼使用表的已知列名稱會更容易一些?有一個認證機制已經到位,但是再次API也可以用於認證,這意味着它暴露了「authentication_info」表中的列名。 – Manali 2014-10-03 14:54:36

相關問題