xss修复html实体编码,node.js – 针对XSS保护Express:对整个传入请求的HTML实体进行编码是否足够?...

我有一个Express应用程序,我想要防止XSS.

我更新了一些关于XSS的页面 – 包括OWASP个页面,鉴于我的应用程序特性,我决定在我使用之前编写一个编码HTML实体的中间件 – 更准确地说是XML实体,包括<>“’ – 我的请求参数他们在路线上.

我还在连接时刷新会话cookie,以防止cookie被盗.

我如何构建我的应用程序

>所有AJAX请求都是POST(所有参数都由中间件重写)

>我不使用GET参数

>我使用的路径参数应该是int,当它们不是时我会引发错误.

>唯一不是来自用户输入的数据来自OAuth个人数据检索,当我们进入我的应用程序时,我也会对其进行清理

>在页面加载时执行的客户端JS仅涉及来自数据库的数据,假设中间件在进入数据库时​​进行了清理.

> window.location安全使用

>我还没有使用任何外部客户端JS库(如JQuery或FileUpload) – 也许我稍后会在代码中添加它们

>当用户输入内容时,它总是被发送到服务器(通过AJAX POST),我借此机会发回已清理的输入以在JS和/或DOM中使用它而不是初始输入

>我不使用eval

我的感觉

我得出结论,使用这种行为(清理外部数据)我避免了所有存储和反映的XSS,正确使用windows.location可以防止我对基于DOM的XSS.

这个结论是对的,还是我忘记了什么?我还应该使用一些helmet功能吗?

编辑

我的问题不是什么是最好的HTML清理服务器端(即使它是它的一部分),我宁愿要知道全局是否我在我的代码中保护我的应用程序保护我的应用程序免受所有众所周知的类型的XSS.特别是我会知道我的中间件是不是一个坏习惯.

实际上,XSS filtering function in PHP至少没有涵盖基于DOM的XSS攻击(因为它仅涵盖服务器端的HTML清理).

我列出了我的应用程序的一些特性,以便对我忘记的任何一点或者将应用程序暴露给XSS漏洞的糟糕架构模式提供反馈.

编辑2

我选择Erlend的答案是最好的,但msoliman的答案也很出色,并且是Erlend答案的补充.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值