2012-04-29 81 views

回答

1

不要列出沒有返回結果的搜索,或只返回「馬虎」匹配的搜索。 「惡意搜索」可能與您網站上的任何產品不匹配,因此它們將被此規則排除。

此規則不要求您以任何方式識別搜索的具體形式(它不是黑名單),因此它是健壯的。此外,列出沒有結果的普通搜索可能不會使您或您的客戶受益,因此排除這些搜索將會改善垃圾郵件問題。

+0

非常感謝有用的見解。那麼我該如何在Magento中做到這一點?我如何不列出不返回匹配結果的搜索?在管理面板中是否有可配置的選項,或者是否必須在我的模板中對其進行硬編碼? – 2012-05-01 08:58:14

+0

不知道,對不起。我對Magento不熟悉;我只是覺得這個想法值得一提。 – 2012-05-01 10:33:41

0

惡意搜索條件可以以某種方式枚舉,所以當開發人員構建一組正則表達式來檢查輸入的搜索詞/查詢是否乾淨時,例如,讓我們以' OR '1'='1 SQL注入作爲搜索輸入:

目標:防止在數據庫中捕獲' OR '1'='1。 HOWTO:應用正則表達式,例如^'?1 (')? [Oo][Rr] (')?1(')?=1(')?$如果該正則表達式返回true,則阻止該術語被捕獲,如果我們想添加更多的阻止術語,我們可以做類似於這個^('?1 (')? [Oo][Rr] (')?1(')?=1(')?)|(Other Regex)^。但是,如果條款已被捕獲,那麼清理數據庫將是最好的解決方案,因爲如果我們試圖在每次顯示熱門搜索詞時進行正則表達式檢查,網站性能會下降,所以我的建議是通過在流行的術語表上運行正則表達式來清理數據庫並刪除具有惡意的行。

1

首先檢查是否評估了注入搜索條件,換句話說,如果搜索條件已正確轉義並過濾以防止sql注入。然後繼續清理索引搜索條件的數據庫。 接下來,我將看看索引函數,如果您在搜索功能中有足夠的sql注入和xss保護,則您並不需要擔心這一點(除非它耗盡了帶寬,那麼您可能需要查看將其列入黑名單IP或主動搜索過濾,然而這會更復雜一些)。從本質上講,您只需要存儲適當的查詢,最簡單的方法是僅存儲按字母順序排列的查詢,但這可能會非常嚴格並排除其他有效查詢。相反,您可以使用黑名單和正則表達式檢查,但實施起來會更難以及時。 最後,您可能希望在每個時間段強加搜索限制,並使用useragent檢查來確保某個人實際上正在搜索。你也可以使用某種形式的驗證碼,但這會嚴重阻止用戶廣泛使用搜索功能,所以我會勸阻他們。