我想弄清楚一種方法來清理從php進入sqlite的輸入。我不能使用mysql。簡單地使用sqlite_escape_string還是需要做其他事情?另外我只能使用sqlite2。如何清理PHP輸入不使用mysql
回答
有辦法,但它取決於你輸入的目標,請參考這個問題,以便更好地理解它:What's the best method for sanitizing user input with PHP?
sqlite_escape_string()
應該做你需要輸入字符串的所有消毒。至於輸出它,如果它被輸出到HTML中,那麼在輸出它之前使用htmlspecialcharts()
。
SQLite爲此提供了sqlite_escape_string()
。不過,它僅適用於PHP 5。
儘管如此,單靠這些方法並不能使您免於注射。一個必要的措施是總是首先驗證用戶提供的輸入,然後再對其進行方法處理,但您必須依賴 - 但實際上尚未創作。
避免SQL注入的最好方法是強制使用參數查詢,並且永遠不會通過字符串連接或可變插值手動組裝SQL語句。
在PHP 5+上,您可以使用PDO,這是一個多數據庫抽象層,支持(其中包括)SQLite和參數化查詢。
轉義函數確保SQL語言使用的特殊字符(主要是引號)被轉義,以便插入/更新等工作。所有sqlite_escape_string所做的都是轉義單引號。
然後,有人可以制定一個SQL注入的重大關切。因爲你使用的是v2,所以你不能使用保護你的prepare和_bind()函數。
SQLite讓你鏈接命令分隔';'所以這裏有一個問題。我建議你首先使用你編寫的幫助函數或使用sprintf仔細設計你的參數,並確保你正確輸入你的參數,浮點數和字符串。
您應該能夠創建自己的轉義函數,以便「逃避」您想要注意的事情...最具體地說是分號,在查詢結束時使用... ESCAPE'\',假設您將反斜槓用作轉義字符。
然後你有人故意插入惡意內容(XSS)的問題。 Grigor提供了一個解決方案 - 在你的字符串上使用htmlentities()。
- 1. 如何清理PHP $ _POST []輸入?
- 2. 如何使用CsvReader清理CSV輸入?
- 3. 如何在php中清理簡單的_GET輸入url到mysql
- 4. 如何使用PHP和sqlsrv驅動程序清理輸入?
- 5. codeigniter如何清理輸入?
- 6. 如果使用準備好的PHP/MySQL查詢,我需要清理輸入嗎?
- 7. Oracle Text:如何清理用戶輸入
- 8. 使用Python清理用戶輸入
- 9. 如何清理php/mysql的工作?
- 10. PHP - 清理富文本區域輸入
- 11. PHP清理粘貼微軟輸入
- 12. 使用CSV作爲輸入清理AD
- 13. 如何清理Runtime.exec()中使用的用戶輸入?
- 14. 如何清理美國地址,使用PHP和/或MySQL
- 15. 如何清理ODBC數據庫輸入?
- 16. 如何清理JS eval輸入?
- 17. 我如何清理Erlang輸入?
- 18. 如何在wordpress中清理輸入
- 19. 如何清理ASP.NET中的MCE輸入?
- 20. 如何使用jquery清理輸入字段值?
- 21. 如何在使用MVC4 ApiController時清理JSON輸入參數?
- 22. 如何在使用getch()之前清理輸入緩衝區?
- 23. 使用PHP PDO時,我應該清理/過濾用戶輸入和輸出嗎?
- 24. 如果輸入有html,則對用戶輸入進行清理
- 25. 輸入不正確時清理istream
- 26. 如何清理Spork輸出?
- 27. 清理輸入中的Joomla
- 28. 爲UniData清理輸入
- 29. 梨DB_DataObject和輸入清理
- 30. 用PHP清理PostgreSQL中所有用戶的輸入
看看http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – DrDol