2012-01-13 13 views
-1

私はユーザーからの検索クエリを持っており、ブラウザに適用する前に処理したいと思っています。私はhtaccessでSEOを使用しているので、検索URLは次のようになります。/ search/[user query]ユーザがいたずらな行為をしないようにする必要があります。:)検索すると../include/conf.php結果的に私の設定ファイルを渡すことになります。スペースを削除する、ドットを削除する(問題を引き起こす)、コンマなどのようなクエリを処理したいjavascriptのドットのような特殊文字の置換

var q = document.getElementById('q').value; 
var q = q.replace(/ /gi,"+"); 
var q = q.replace(/../gi,""); 
document.location='search/'+q; 

最初だけで正常に動作を置き換えるが、もう一つは...私のクエリを使用して安全にこの危険な文字を置き換えることへの解決策を台無しに?

答えて

2

JavaScriptを無効にするか、curlを使用しても、私はまだ「いたずらなもの」を実行できますか?クライアント側では、

encodeURIComponent(document.getElementById('q').value) 

となり、セキュリティチェックをサーバーに任せてください。あなたは悪意のあるユーザーが何をすることができるのか驚くでしょう(平文.の代わりにいくつかのエスケープシーケンスを使用するのが最も簡単な例です)。

0

正規表現のドットは何でも一致します。あなたは、バックスラッシュ(\)でエスケープする必要があります:

var q = q.replace(/\.\./gi,""); 
2

私はこのサーバー側にしてください - 誰かがページにあなたのJSを変更するか、それを完全にオフにすることがあまりにも簡単です。サーバー側で実行される検索スクリプトは、簡単に改ざんできないため、検索を一貫してフィルタリングできます。

検索結果が制限されている可能性があります。機密設定ファイルが表示される場合は、検索結果が多すぎる可能性があります。