使用 JS 转义有害字符/清理用户输入的标准方法是什么?



在阅读了大量文章和StackOverflow响应后,我仍然不明白处理用户输入的行业标准方法是什么(textarea和input type="text"(。我应该转义什么以及如何转义字符?应该剥离/替换什么以及如何删除,以便 JSON 不会中断,尤其是当用户可以复制粘贴一些有史以来最奇怪的字符时?

我很久以前提出的可疑解决方案是:

String.prototype.escapeChars = function () {
 return this.replace(/&/g, '&')
.replace(/nr?/g, '
')
.replace(/n/g, '
')
.replace(/r/g, '
')
.replace(/s/g, ' ')
.replace(/</g, '&#x3c;')
.replace(/"/g, '&#34;')
.replace(/'/g, '&#39;')
.replace(/>/g, '&#x3e;')
.replace(/\/g, '&#x27;')
.replace(/[^x00-x7F]/g, '');
};

如果有人能详细解释或指出一个关于如何使用香草 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));

我很久以前就提出的可疑解决方案是......

这看起来像是为转换为HTML而不是JSON而设计的。

最新更新