使用Node.js阻止客户端和服务器端都使用XSS表单

时间:2019-02-16 21:20:32

标签: javascript node.js forms validation xss

对于已经提出的问题,我找不到完整的解决方案。 尽管攻击者可以在客户端禁用JS,但我希望在纯JavaScript中具有相同的解决方案来验证表单。服务器是Node.js。该数据库为NoSQL类型。 我有两种形式需要验证:

1)用户使用带有电子邮件和密码输入的表单通过HTTPS连接。

2),用户可以在仪表板的一部分中以以下形式创建添加:

  • 作者(输入文本)

  • 关键字(输入文字)

  • 所见即所得HTML编辑器(所见即所得)。用户可以加粗,更改文本的颜色。因此,输出将是HTML,它将作为字符串存储在数据库中。

  • 上传将保存在云的BLOB容器中的图像。

从我学到的知识,我可以使用正则表达式:

a)电子邮件

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());}

b)密码-我只能检查它是否至少包含6个字符并且是字符串类型。如何验证字符串实际上不是HTML或JavaScript?验证很重要吗?

c)作者,关键字-可能与密码相同(以检查不是HTML或JavaScript)。作者将在添加中公开,因此可以用作XSS攻击。

d)所见即所得HTML编辑器-这很棘手,因为输出是HTML。

e)图片-它们只会从云中下载。我必须在上传中进行任何验证吗?

谢谢!

0 个答案:

没有答案