Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中替换特殊字符,如点_Javascript_String_Search_Replace - Fatal编程技术网

在javascript中替换特殊字符,如点

在javascript中替换特殊字符,如点,javascript,string,search,replace,Javascript,String,Search,Replace,我有一个来自用户的搜索查询,我想在应用到浏览器之前对其进行处理。因为我在htaccess中使用SEO,搜索url看起来是这样的:/search/[user query],所以我应该做一些事情来防止用户做淘气的事情:)比如搜索../include/conf.php,这将导致泄露我的配置文件。我想处理查询,比如删除空格、删除点(这会导致问题)、逗号等 var q = document.getElementById('q').value; var q = q.replace(/ /gi,"+"); v

我有一个来自用户的搜索查询,我想在应用到浏览器之前对其进行处理。因为我在htaccess中使用SEO,搜索url看起来是这样的:/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;

第一个替换很好,但第二个替换会干扰我的查询。。是否有安全替换此危险字符的解决方案?

正则表达式中的点匹配任何内容。您需要使用反斜杠(“\”)将其转义:


我会在服务器端完成这项工作——对某些人来说,修改页面中的JS或完全关闭JS太容易了。运行服务器端的搜索脚本不容易被篡改,因此可以一致地过滤搜索


您可能还想限制搜索返回的内容。。。如果它能够显示敏感的配置文件,你的搜索范围可能会有点太大。

所以如果我禁用JavaScript或使用
curl
我仍然可以做“顽皮的事情”?在客户端,通过以下方式进行健全性转义:

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

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