gpt4 book ai didi

javascript - 如何使用 JavaScript 修复标题操作 cookie?

转载 作者:行者123 更新时间:2023-11-30 05:33:18 25 4
gpt4 key购买 nike

我的 JavaScript 代码:

function CookieSetting(name, value) {
var today = new Date();
today.setTime( today.getTime() );
var expires = 28;
expires = expires * 1000 * 60 * 60 * 24;
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name+"="+escape( value ) +
( ( expires ) ?";
domain="+window.location.hostname+";path=/;expires="+expires_date.toGMTString() : "" )
}

它工作正常,但是当我运行 Fortify 工具时,它显示此错误:

The method CookieSetting() includes unvalidated data in an HTTP response header.

This enables attacks such as cache-poisoning cross-site scripting cross-user defacement page hijacking cookie manipulation or open redirect.

Including unvalidated data in an HTTP response header can enable cache-poisoning cross-site scripting, cross-user defacement, page hijacking, cookie manipulation or open redirect.

我该如何解决这个问题?

最佳答案

问题是,如果值来自用户输入,他就可以攻击您的 http header 。

如果他能够将 CR(回车,也由 %0d 或\r 给出)插入,那么他就可以将另一个headers 添加到您的 http请求(因为 http header 由 CR 分隔)。来源:Nice web article about those attacks .

解决方案 A)

我调查过并 existing implementation of javascript setCookie他们所做的是:

optionsString = ( ( expires ) ? "; domain="+window.location.hostname+";path=/;expires="+expires_date.toGMTString() : "" 
document.cookie = cookieName + '=' + encodeURIComponent( value ) + optionsString;

但是如果您这样做,您将需要相反的方法来获取 cookie - getCookie(),您将在返回值之前执行 decodeURIComponent()

我会尝试通过 encodeURIComponent() 方法清理您的值。

解决方案 B)

清理name参数

您可以尝试的另一件事是通过转义方法清理您的名字,也许这就是强化工具提示的原因:

document.cookie = window.escape(name)+"="+window.escape(value) + ...

关于javascript - 如何使用 JavaScript 修复标题操作 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25498921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com