2010-04-15 105 views
4

當數據保存在某人的iPhone和雲上的遠程數據庫之間時,我總是採取預防措施處理SQL INJECTION ATTACKS。防止在您自己的iPhone上使用sqlite注入攻擊?

但是,如果只是將數據(使用sqlite)從某人的手機保存到自己手機上的數據庫,還需要做同樣的事情嗎?

他們能做什麼更糟?在自己的手機上刪除自己的數據(或表格)? (如果他們真的很努力)

謝謝。

回答

1

是的,這是必要的,恕我直言。

  1. 大部分注入攻擊可以通過粘附可以防止對正確性
    SQL佔位符和約束變量,例如,處理這兩個意外形成輸入(例如,在"5 o'clock"無辜撇號)和惡意輸入(例如"' OR 1=1 --")。
    因此,要嚴格糾正您的數據處理,並且不要擔心大部分注入。

  2. 注射劑可能會破壞應用程序的邏輯
    SQLite的具有觸發器,我想,但在任何情況下,應用程序可能會基於從本地數據庫拉數據進行決策,攻擊環境的其他方面等,如果今天的應用ISN這足夠複雜,明天的轉會。

  3. 其他人可能正在使用(攻擊)手機,而不僅僅是授權用戶
    確實,這是通過桌面驗證到StackOverflow的通用風險。然而,我發現「智能手機」應用程序更容易受到意外操作者的影響:許多手機沒有密碼,許多應用程序不需要經常重新驗證,用戶可以自由地將手機送給需要快速撥打電話的人。

+0

像「5點鐘」這樣的條目會如何攻擊或注入數據庫? 如果我給別人我的手機...他們可以自由刪除任何數據,聯繫人,任何應用程序等。所以「我會寫一些注入代碼」可能是他們會嘗試的最不可能的事情。 – Susanna 2010-05-04 01:16:14

+0

@Kimberly,「點」在意圖上可能不是惡意的 - 它可能會簡單地破壞應用程序或被不恰當地拒絕。關於你的第二個問題,恭敬地說,僅僅因爲我們可以想象用戶愚蠢地促成了立即的破壞性攻擊,並不意味着沒有更微妙的攻擊媒介。 – pilcrow 2010-05-04 03:29:03

0

如果您正在使用遠程數據庫同步iPhone的數據庫不信任的內容。它不需要SQL注入來更改數據庫。一個越獄的iPhone讓用戶可以完全訪問包含sqlite數據庫文件的整個文件系統,然後可以對其進行修改,但攻擊者需要。這不是sql注入,這是一個「客戶端信任」漏洞。

sqlite下的SQL注入對攻擊者很有用。與MySQL不同的是,Sqlite允許你堆棧查詢,因此無論什麼查詢受到sql注入的影響,攻擊者總是可以創建/刪除/插入/更新/刪除/選擇/等等。在MySQL下,它通常會注入子選擇或聯合選擇來獲取特定數據,但是例如,在正常情況下,您不能將select語句轉換爲插入。

+0

我不是與遠程數據庫「同步」,也不是使用任何類型的任何遠程數據庫。 如果用戶偷竊我的手機...然後越獄......他已經可以輕鬆地刪除/添加/編輯我的數據庫。 我沒有以任何方式使用MySql。 – Susanna 2010-05-04 01:19:47

2
  • 是否有必要? - 是的,它的「必要」,即它可能是值得的。即使你在這種情況下不關心安全性(這可能是有效的),你應該擔心正確性(至少是它的驕傲問題)。

  • 什麼是可能發生的最壞情況?

    • 用戶#1 Patty O'Brian進入她的名字成牙齦了SQL調用一個領域,它失敗。該程序要麼處理得不好,要麼用戶得到一個模糊的錯誤信息,說明它爲什麼失敗。
    • 用戶#2輸入一個名字,它將SQL調用粘貼併成功!該計劃現在處於未知狀態。

    不管怎樣,現在的用戶聯繫方式的支持,吃起來的時間和精力(用戶#2從不承認他們做了什麼,這使得更加難以調試)和/或要求他們的錢

+0

我的代碼總是正確處理單引號和雙引號......但我說的是真正的SQL注入和黑客行爲。 – Susanna 2010-05-04 01:17:45