2017-04-16 65 views
0

根據this question,SQL注入是必須防止的事情。在用戶只從數據庫中選擇的應用程序中,這將成爲一個問題?客戶端只選擇SQL注入

+0

是的,是的。 –

+0

是的。這是一個問題。 –

+0

@JohnConde怎麼樣?我正在使用的MySQL用戶僅具有SELECT訪問權限,而代碼本身僅運行SELECT功能。 – p26528

回答

2

這裏有問題的例子,如果用戶被限制在SELECT權限SQL注入甚至可以允許:

  • 攻擊者可以讀取預期的數據只能由其他用戶讀取。許多應用程序使用相同的MySQL用戶進行連接,然後使用應用程序代碼實施進一步的數據訪問限制。即我只能看到我創建的購物車。但是通過SQL注入,我可以讀取每個人的購物車,他們的購買歷史記錄,他們的信用卡號碼等等。

  • 攻擊者可以讀取其他帳戶的散列密碼,將其破解(在自己的計算機上),然後使用更高的權限登錄到其他用戶。

  • 攻擊者可以通過運行使用太多資源的SELECT查詢來運行denial-of-service attack。例如,在MySQL上,即使對於具有沒有特權的用戶,表INFORMATION_SCHEMA.CHARACTER_SETS也是可讀的。現在到底是怎麼回事,當攻擊者運行此查詢的情況發生:

    SELECT * FROM (SELECT * FROM CHARACTER_SETS, CHARACTER_SETS, CHARACTER_SETS, 
    CHARACTER_SETS, CHARACTER_SETS, CHARACTER_SETS) AS t ORDER BY 1 
    

    它試圖在磁盤上創建臨時表爲2,839,760,855,281行。我預測會耗盡服務器上的磁盤空間。

你的問題聽起來像你捕魚的理由跳過編寫安全的代碼,防止SQL注入。

對不起,沒有骰子。你需要編寫安全的代碼。

0

用戶所做的任何事情都會導致數據源上的CRUD操作應該被視爲危險並採取一切預防措施來防止SQL注入。

+0

爲什麼?我正在使用的MySQL用戶僅具有SELECT訪問權限,而代碼本身僅運行SELECT功能。 – p26528

+0

因爲,SQL注入如何欺騙所謂的用戶來選擇所有數據並將其發送給調用者? – rogerwamba