2014-03-28 54 views
0

我有一個簡單的問題:我需要擔心OpenCart表單中潛在的表單注入問題還是全部由開發人員照顧?我是否需要清理,去除和修剪所有表單輸入字段?OpenCart - 我需要清理,去除,修剪表單中的字符串嗎?

例如,如果我修改OC現有的聯繫表格(信息/觸點):

$name = filter_var($this->request->post['name'], FILTER_SANITIZE_STRING); 
$email = strtolower(preg_replace('((?:\n|\r|\t|%0A|%0D|%08|%09)+)i' , '', $this->request->post['email'])); 
+0

這個問題缺少你是否願意進行後處理的OC還是要實現一個新的功能,所有的現有形式的信息。如果有新功能,您應該通過實施適當的驗證以及轉義(和類型轉換)插入到數據庫中的值來照顧這一點。你的問題類似於:*我需要一把切成片的洋蔥刀嗎?* - 我們不知道你是否已經有切片的洋蔥,或者你是否想要切成片的洋蔥... – shadyyx

+0

@shadyyx請看我編輯過我的問題在上面。 – linuxoid

+0

你可以做到這一點,但這是完全點頭需要的,因爲聯繫表單中的值只能通過電子郵件發送,而不是存儲在任何地方。對於表單,唯一應該擔心的是SQL(JS,CSS)注入,這些注入只有在存儲在數據庫中的值纔有意義。檢查幾個模型類和它們的方法來探索字符串值如何轉義('$ this-> db-> escape($ value)')或其他類型類型轉換(例如'(int)$ integer')。 – shadyyx

回答

1

在Opencart的所有默認的形式是由Opencart的開發者做用戶數據的正確轉義免受SQL注入。但如果按年創建自己的形式(或域),那麼你就需要使用

$this->db->escape($user_data); 

這種方法DB你使用的是什麼需要逃避不論照顧自己逃避它(MySQL的,postegres等)

他們已經完成了自己的工作,現在您必須儘自己的責任。

P.S.你可以看到catalog\model\account\customer.php爲例

+0

是的,我可以看到他們這樣做時,他們使用DB,但與接觸形式,他們只是刪除PHP/html標籤 – linuxoid

+0

@ user665327接觸形式完全不同的東西,聯繫方式都不會再被保存在數據庫中,因此沒有SQL注入可能,所以opencart只是執行一些像名稱一樣的驗證應該在3到32個字符之間等等,你可以看到'驗證'功能接觸控制器進行了什麼驗證 –

+0

@ user665327驗證的概念也不同於SQL注入預防。驗證只是保證很小的事情 –