簡體   English   中英

如果我使用CodeIgniter,為數據庫搜索清理$ _GET的最佳方法是什么?

[英]What is the best way to sanitize $_GET for database search if I use CodeIgniter?

我正在編寫一個搜索功能,該功能使用戶可以搜索數據庫中的特定表。 我的網站在CodeIgniter上運行。

對於搜索功能,我使用$ _GET代替了CodeIgniter $ this-> input-get(),因為在幫助函數中無法使用后者。

現在,這是一個安全問題:

在$ _GET數組中清理和過濾惡意字符以防止XSS和SQL注入的最佳方法是什么?

請記住,$ _ GET數組中的數據將用於查詢數據庫並從中檢索信息。

是否有一種遞歸的方式來清理整個$ _GET數組而不必一一遍歷?

我應該使用PHP的過濾器方法還是CodeIgniter的方法?

任何建議將不勝感激! 提前致謝!

默認情況下,Codeigniter禁用$ _GET。 使用URI類,您可以模擬$ _GET變量:

使用CodeIgniter在URL中獲取參數

您可以破解它並使用$ _GET,這聽起來像您已經完成了。 但我不建議這樣做。 您應該使用CodeIgniter的Input類 這提供了XSS篩選,您可以通過運行以下命令清除整個$ _GET數組:

$this->input->get(NULL, TRUE); // returns all GET items with XSS filter 

如果使用Codeigniter的數據庫實用程序類運行查詢,則該類具有內置的轉義功能。請查看“轉義查詢”部分。

http://ellislab.com/codeigniter/user-guide/database/queries.html

您可以使用$ this-> db-> escape($ variable)來轉義查詢中的值。 但是,強烈建議使用CI的輸入類。

有關更多信息,請訪問: http : //ellislab.com/codeigniter/user-guide/database/queries.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM