2012-05-20 93 views
3

您好,我正在開發一個網站並進行一些滲透測試。它是建立在CakePHP中誰使我認識到:SQL注入測試的正確方法

CakePHP的已經保護您免受SQL注入,如果你使用 CakePHP的ORM的方法(例如find()和save())和適當的陣列 符號(即。array('field'=> $ value))而不是原始SQL。

但是我不確定要輸入到輸入表單字段中的數據以便測試SQL注入預防。

我已經用簡單的VARCHAR下面的表格名稱屬性 -

categories: name 
clients: address, county, country, name 
items: name 
statuses: name 

這是否SQL語句輸入到一個表單並提交要測試的SQL注入嘗試的正確方法是什麼?

DROP TABLE "categories"; 

提交這份表單上輸入了數據庫中的值之後爲:

DROP TABLE "categories"; 

我可以假設,這意味着該網站已被保護的嘗試SQL注入,因爲它沒有下降的類別表在我的數據庫?

+0

您是否按照指導原則使用ORM方法?如果是這樣,那麼請查看其他問題,如保護對應用程序和數據庫的訪問權限,正確地轉義輸出,會話劫持以及使用SSL保護敏感頁面,以及減輕暴力密碼攻擊。 – Ami

+0

這是針對SQL Server的,但它總是一個很好的閱讀它的概念和想法:http:// www。sommarskog.se/dynamic_sql.html#SQL_injection – Bridge

回答

0

記住,幾乎所有的自動SQL注入掃描工具只能找到漏洞的最簡單的形式和最懷念的現實世界這個問題的實例。

受過教育且經驗豐富的人類攻擊者/測試者將始終執行更好的工作,並找到一大堆sqli問題,而這些工具不會。

但是... SQL注入是最簡單的webapp漏洞修復之一。因此,如果您有權訪問源代碼,只需閱讀它並確保它正確使用綁定參數或存儲過程,並且不要通過將字符串附加到一起來構建SQL命令。如果你看到任何類似的東西

sql = 'select col from table where x=' + variable 

然後警鐘應該熄滅。 讀取和調整數據源幾乎肯定會比嘗試執行需要多年經驗才能掌握的測試更快,更簡單和更有效。

請參閱https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet