替换javascript中的点等特殊字符

时间:2012-01-13 16:44:22

标签: javascript string search replace

我有来自用户的搜索查询,我想在应用于浏览器之前处理它。因为我正在使用搜索引擎优化和htaccess,搜索网址如下所示:/ search / [user query]我应该做些什么来防止用户做顽皮的事情.. :)喜欢搜索../include/conf.php哪个会导致赠送我的配置文件。我想处理查询,如删除空格,删除点(这将导致问题),逗号等。

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

第一个替换工作正常,但第二个替换我的查询混乱..任何安全替换这个危险角色的解决方案?

3 个答案:

答案 0 :(得分:2)

我做这个服务器端 - 对于某人来说,改变页面中的JS或完全关闭它太容易了。您运行服务器端的搜索脚本无法轻易被篡改,然后可以一致地过滤搜索。

您可能还想限制搜索返回的内容...如果它能够显示敏感的配置文件,那么您的搜索可能会有太大的影响。

答案 1 :(得分:2)

因此,如果我禁用JavaScript或使用curl,我仍然可以执行“顽皮的事情”?在客户端,通过以下方式逃避理智:

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

并将安全检查留给服务器。你会惊讶于恶意用户可以做什么(使用一些转义序列而不是普通.是最简单的例子。)

答案 2 :(得分:0)

正则表达式中的点匹配任何内容。你需要用反斜杠('\')来逃避它们:

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