这个输入清理正则表达式安全吗?
Is this input sanitization regex safe?
我有一个输入字段,我希望用户在其中输入地名 (city/town/village/whatever)。我有这个功能,用于清理输入字段的内容。
sanitizeInput: function (input) {
return input.replaceAll(/[&/\#,+()$~%.^'":*?<>{}]/g, "");
}
我想删除我不希望出现在地名中的所有特殊字符。我认为黑名单正则表达式比白名单正则表达式更好,因为仍然有很多字符可能出现在地名中。
我的问题是:
- 这个正则表达式安全吗?
- 可以改进吗?
- 你看到使用这个正则表达式攻击程序的方法了吗?
编辑:这是一个仅限前端的小型项目。没有后端。
请务必记住,前端清理主要是为了改善用户体验并防止意外数据输入错误。有一些方法可以通过前端控制。出于这个原因,出于安全目的依赖后端清理数据非常重要。这可能不是您问题的答案,但根据您用于后端的内容,您可能需要清理某些东西,或者它可能内置控件,您可能不需要担心进一步清理。
ps。
请原谅我缺乏参考资料。不过还是值得自己研究一下。
您的正则表达式非常适合删除任何特殊字符。
答案是:
1.the regex 是安全的,但正如您提到的,它是一个 vuejs 项目,因此 js 函数将 运行 在浏览器上。浏览器基本上不能安全地进行用户输入清理。您也应该在后端服务器中执行此操作,以确保 100% 安全
- 在此示例中,您无法改进正则表达式本身。但是除了 regex 之外,您还可以对每个特殊字符使用 indexOf (这将是最快的过程,但更冗长且代码太多)
像 :
str.indexOf('&') !== -1
str.indexOf('#') !== -1
等等
3.same 作为答案 1,正则表达式是安全的,但由于它在浏览器 js 中使用,代码将被禁用,因此请同时进行服务器端验证。
如果您对此答案有任何疑问,请通过评论或回复告诉我。
我有一个输入字段,我希望用户在其中输入地名 (city/town/village/whatever)。我有这个功能,用于清理输入字段的内容。
sanitizeInput: function (input) {
return input.replaceAll(/[&/\#,+()$~%.^'":*?<>{}]/g, "");
}
我想删除我不希望出现在地名中的所有特殊字符。我认为黑名单正则表达式比白名单正则表达式更好,因为仍然有很多字符可能出现在地名中。
我的问题是:
- 这个正则表达式安全吗?
- 可以改进吗?
- 你看到使用这个正则表达式攻击程序的方法了吗?
编辑:这是一个仅限前端的小型项目。没有后端。
请务必记住,前端清理主要是为了改善用户体验并防止意外数据输入错误。有一些方法可以通过前端控制。出于这个原因,出于安全目的依赖后端清理数据非常重要。这可能不是您问题的答案,但根据您用于后端的内容,您可能需要清理某些东西,或者它可能内置控件,您可能不需要担心进一步清理。
ps。 请原谅我缺乏参考资料。不过还是值得自己研究一下。
您的正则表达式非常适合删除任何特殊字符。 答案是:
1.the regex 是安全的,但正如您提到的,它是一个 vuejs 项目,因此 js 函数将 运行 在浏览器上。浏览器基本上不能安全地进行用户输入清理。您也应该在后端服务器中执行此操作,以确保 100% 安全
- 在此示例中,您无法改进正则表达式本身。但是除了 regex 之外,您还可以对每个特殊字符使用 indexOf (这将是最快的过程,但更冗长且代码太多) 像 : str.indexOf('&') !== -1 str.indexOf('#') !== -1 等等
3.same 作为答案 1,正则表达式是安全的,但由于它在浏览器 js 中使用,代码将被禁用,因此请同时进行服务器端验证。
如果您对此答案有任何疑问,请通过评论或回复告诉我。