javascript - 使用 JS 转义有害字符/清理用户输入的标准方法是什么?
问题描述
在阅读了大量文章和 StackOverflow 回复后,我仍然不明白处理用户输入(textarea 和 input type="text")的行业标准方法是什么。我应该如何以及如何转义字符?应该删除/替换什么以及如何删除,以便 JSON 不会中断,尤其是当用户可以复制粘贴一些有史以来最奇怪的字符时?
我很久以前提出的可疑解决方案是:
String.prototype.escapeChars = function () {
return this.replace(/\&/g, '&')
.replace(/\n\r?/g, ' ')
.replace(/\n/g, ' ')
.replace(/\r/g, ' ')
.replace(/\s/g, ' ')
.replace(/\</g, '<')
.replace(/\"/g, '"')
.replace(/\'/g, ''')
.replace(/\>/g, '>')
.replace(/\\/g, ''')
.replace(/[^\x00-\x7F]/g, '');
};
如果有人能详细解释或指出一个关于如何使用 vanilla js 正确完成它的好教程,我将非常感激。
解决方案
处理用户输入的行业标准方法是什么
为目标数据格式使用适当的库。
应该删除/替换什么以及如何删除,以便 JSON 不会中断,尤其是当用户可以复制粘贴一些有史以来最奇怪的字符时?
没有什么。只需使用JSON.stringify,它就会处理扔给它的任何东西。
例如,如果您将数据发送到需要 JSON 输入的 Web 服务:
const name = $('input[name=name]').val();
const address = $('input[name=address]').val();
const ajax = jQuery.ajax({
method: "POST",
url: "http://example.com/endpoint",
contentType: "application/json",
data: JSON.stringify({ name, address })
});
ajax.then(data => console.log(data));
我很久以前提出的令人怀疑的解决方案是……</p>
看起来它是为转换为 HTML 而设计的,而不是 JSON。
推荐阅读
- c++11 - 重复类型中的 C++/CLI 和不一致的布局信息 (std._Tree_unchecked_const_iterator)
- android - 为什么在最新版本中无法加载图像?
- razor - 如何在页面的所有链接中向 url 添加参数
- c# - 从 C# dll 调用 C++ dll 并一无所获
- r - 根据第二个行号列表将一个列表中的特定行分配为 NA
- java - 如何在 selenium 代码中指定多个端口来启动 appium 服务器
- arrays - Laravel 验证:规则数组中的错误。*
- node.js - 如何在电子生成器中添加发布者
- react-native - 在 react-native drawerNavigator 中显示登录用户信息
- java - 在 Apache Tika 中禁用嵌入式文件内容解析