2009-10-28 113 views
0

這是一個奇怪的問題。我有一個朋友正在研究一個應用程序。有一個有4個字段的表格,其中包含一個詞和一個定義。在網站上有一個文本框,用戶可以在該框中輸入字符串並查詢數據庫,並在輸入字符串時查找類似的內容。 (一種實時搜索的東西)。關於實時搜索字段中安全性的問題

如果正在寫入的內容實際上沒有像您常規的網站搜索一樣提交,那麼是否存在安全風險?如何使用正則表達式或類似方法驗證此時的內容?

據我所知它是用PHP和Javascript編寫的。你會在查詢之前驗證Javascript嗎?還是甚至有必要?

在此先感謝! :)

回答

2

對於數據庫查詢,存在惡意用戶輸入的固有風險。快速瀏覽一下這個快速的SQL Injection維基百科條目,以熟悉這個主題。

如果您偏​​執,可以使用preg_replace()在PHP中將字符列入白名單,以在查詢之前刪除任何不匹配的字符。

除少數例外情況外,您應該對查詢中使用的任何和所有用戶提供的變量使用mysql_real_escape_string()()。例外情況包括,您可以使用強制轉換十進制值(INT)(浮動)

只要你不使用JavaScript來提交輸入後,網頁上顯示的其他地方搜索文本文本,您不需要在跨站點腳本(XSS)預防方面做任何事情。

+0

PDOStatement> PDO :: quote> mysql_real_escape_string – tommym 2009-10-29 00:03:47

1

從我收集的內容來看,你在說的是autocomplete pattern

對於Web應用程序,這通常是通過AJAX實現的。而且由於AJAX僅僅是轉身的HTTP消息傳遞,因此與AJAX請求一起發送的數據受到所有其他HTTP請求的內容相同的缺陷和安全漏洞 - SQL注入,數據包嗅探等。

所以是的,你肯定想要在後端應用適當的安全措施。

這是否回答你的問題?

+0

我想他隱約意識到存在安全風險,但他的問題還包括如何解決這些風險 – 2009-10-28 23:32:58

+0

感謝您的鏈接,這個答案也有幫助! – bob 2009-10-28 23:36:54