Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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答案的补充.

解决方法

然你在这里做得很好,但我认为你应该虑这个:逃避数据以避免XSS需要依赖于上下文. OWASP XSS预防备忘单详细解释了这一点.

恕我直言,当@R_673_11250@端接收数据时,您应该确保数据根据域有效.这就是你正在做的路线参数.你希望它是一个int,如果不是,就拒绝它.对于其他数据类型,您应该做同样的事情.这是一个有效的名字吗? (名字通常不包含<或>).这是有效的邮政编码吗?这将阻止大量攻击,因为攻击通常包含在给定上下文中无效的字符.

当涉及到停止攻击时,XSS,sql注入等都是同一问题的子类.在将数据添加到HTML(或XML或SQL查询等)时,您必须转义数据,并且您需要为给定的上下文转义.如何转义数据是不同的取决于它是否在标签之间,作为属性值,在CSS等内.

通过尝试在进入过程中对事物进行清理,最终@R_312_9381@您的santization功能不够好,并且您已经部分/错误地清理了数据,并且修复它将是一团糟.

总结如下:

a)在途中根据域验证和拒绝

b)在输出期间执行基于上下文的转义

大佬总结

以上是大佬教程为你收集整理的node.js – 针对XSS保护Express:对整个传入请求的HTML实体进行编码是否足够?全部内容,希望文章能够帮你解决node.js – 针对XSS保护Express:对整个传入请求的HTML实体进行编码是否足够?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。