相关疑难解决方法(0)

用于检测浏览器语言首选项的JavaScript

我一直在尝试使用JavaScript检测浏览器语言首选项.

如果我在IE中设置浏览器语言Tools>Internet Options>General>Languages,如何使用JavaScript读取此值?

Firefox的问题相同.我无法检测到tools>options>content>languages使用的设置navigator.language.

使用时 navigator.userLanguage ,它会检测通过Start>ControlPanel>RegionalandLanguageOptions>Regional Options选项卡完成的设置 .

我曾与测试navigator.browserLanguage,并navigator.systemLanguage但没有返回第一个设置的值(Tools>InternetOptions>General>Languages)

我找到了一个详细讨论这个问题的链接,但问题仍然没有答案:(

javascript localization internationalization

424
推荐指数
18
解决办法
47万
查看次数

为什么在CSR中放置CSRF预防令牌很常见?

我试图了解CSRF的整个问题以及预防它的适当方法.(资源我已阅读,理解并同意:OWASP CSRF预防报告表,关于CSRF的问题.)

据我了解,CSRF的漏洞是通过假设(从网络服务器的角度来看)传入HTTP请求中的有效会话cookie反映经过身份验证的用户的意愿而引入的.但是,原始域的所有cookie都被浏览器神奇地附加到请求上,因此实际上所有服务器都可以通过请求中存在的有效会话cookie来推断该请求来自具有经过身份验证的会话的浏览器; 它无法进一步假设该浏览器中运行的代码,或者它是否真正反映了用户的意愿.防止这种情况的方法是在请求中包含其他身份验证信息("CSRF令牌"),这些信息由浏览器的自动cookie处理以外的某些方式携带.然后,松散地说,会话cookie验证用户/浏览器,并且CSRF令牌验证在浏览器中运行的代码.

简而言之,如果您使用会话cookie来验证Web应用程序的用户,您还应该为每个响应添加一个CSRF令牌,并在每个(变异)请求中要求匹配的CSRF令牌.然后,CSRF令牌从服务器到浏览器进行往返回服务器,向服务器证明发出请求的页面是由该服务器批准(甚至由该服务器生成).

关于我的问题,这是关于在该往返中用于该CSRF令牌的特定传输方法.

看起来很常见(例如在AngularJS,Django,Rails中)将CSRF令牌从服务器发送到客户端作为cookie(即在Set-Cookie头中),然后让客户端中的Javascript将其从cookie中删除并附加它作为单独的XSRF-TOKEN标头发送回服务器.

(另一种方法是由例如Express推荐的方法,其中由服务器生成的CSRF令牌通过服务器端模板扩展包含在响应主体中,直接附加到将其提供回服务器的代码/标记,例如作为一个隐藏的表单输入.这个例子是一个更多的Web 1.0-doh的做事方式,但是可以很好地推广给更多JS的客户端.)

为什么使用Set-Cookie作为CSRF令牌的下游传输是如此常见/为什么这是一个好主意?我想所有这些框架的作者都仔细考虑了他们的选择,并没有弄错.但乍一看,使用cookie解决基本上对cookie的设计限制似乎很愚蠢.实际上,如果您使用cookie作为往返传输(Set-Cookie:服务器的下游标头告诉浏览器CSRF令牌,而Cookie:上游标题,浏览器将其返回给服务器)您将重新引入漏洞正试图解决.

我意识到上面的框架不会使用cookie来进行CSRF令牌的整个往返; 他们使用Set-Cookie下游,然后在上游使用其他东西(例如X-CSRF-Token标头),这确实可以关闭漏洞.但即使使用Set-Cookie作为下游传输也可能具有误导性和危险性; 浏览器现在将CSRF令牌附加到每个请求,包括真正的恶意XSRF请求; 充其量只会使请求变得比它需要的更大,而在最坏的情况下,一些善意但误导的服务器代码实际上可能会尝试使用它,这将是非常糟糕的.此外,由于CSRF令牌的实际预期接收者是客户端Javascript,这意味着此cookie不能仅使用http保护.因此,在Set-Cookie标头中向下游发送CSRF令牌对我来说似乎非常不理想.

security cookies csrf owasp web

248
推荐指数
3
解决办法
10万
查看次数

如何在express.js资产上设置响应头

我需要在快递服务的脚本上设置CORS.如何在公共/资产的这些返回响应中设置标头?

javascript node.js express

141
推荐指数
9
解决办法
18万
查看次数

如何通过JavaScript访问HTTP请求标头字段?

我想在我的客户端JavaScript中捕获HTTP请求头字段,主要是Referer和User-Agent.我怎么能访问它们?


Google Analytics(分析)设法通过JavaScript将您嵌入页面中的数据获取,因此它绝对可行.

相关:
在JavaScript中访问网页的HTTP标头

javascript http http-headers

50
推荐指数
3
解决办法
14万
查看次数

如何在Javascript中手动设置REFERER标头?

我想设置我的网页的Referer标题.目前它显示"xyz",我想将其设置为"abc".

查看引用使用 javascript:alert(document.referer)

javascript

45
推荐指数
4
解决办法
13万
查看次数

Free Rest API将当前日期时间检索为字符串(时区不相关)

我正在寻找一个可靠的REST API,它可以跨平台提供世界时间和时区信息.

我需要当前时间作为字符串.无论用户在世界各地的位置如何,我都希望它能在一秒钟内返回结果.

在其他实现中,我想将它用于一致的倒数计时器,比用户的[可能不准确]计算机时间更准确.它可以是GMT或其他时区,只要指定时区和偏移量,如2012-11-05 16:16:50 EST.

我会自己构建这个API,但是当通过像Rails这样的整个大软件堆栈过滤某人只是为了返回一个简单时,我会担心潜在的延迟问题(以及不优雅)String.

远离美国东海岸的用户的延迟时间过长会抵消任务所需的准确性带来的好处.

任何建议和/或示例表示赞赏.

api rest time timer timezone-offset

40
推荐指数
3
解决办法
10万
查看次数

AJAX和FormsAuthentication,如何阻止FormsAuthentication覆盖HTTP 401?

在使用FormsAuthentication配置的一个应用程序中,当用户访问没有auth cookie或过时的访问受保护页面时,ASP.NET会发出HTTP 401 Unauthorized,然后FormsAuthentication模块在请求结束前拦截此响应,并将其更改为HTTP 302 Found,设置HTTP标头"Location:/ path/loginurl"以便将用户代理重定向到登录页面,然后浏览器转到该页面并检索登录页面,该页面未受保护,获取HTTP 200好的.

当AJAX没有被考虑时,这确实是一个非常好的主意.

现在我在我的应用程序中有一个返回JSON数据的URL,它需要用户进行身份验证.一切运作良好,问题是如果auth cookie到期,当我的客户端代码调用服务器时,它将获得HTTP 200 OK和登录页面的html,而不是HTTP 401 Unauthorized(因为之前解释过).然后我的客户端试图将登录页面html解析为json,并失败.

那么问题是:如何应对来自客户端的过期身份验证?应对这种情况的最优雅解决方案是什么?我需要知道调用何时成功,我想使用HTTP语义来实现.

是否可以以安全的跨浏览器方式从客户端读取自定义HTTP标头?如果请求是AJAX请求,有没有办法告诉FormsAuthenticationModule不执行重定向?有没有办法使用HTTP标头覆盖HTTP状态,就像覆盖HTTP请求方法一样?

我需要Forms身份验证,我想避免重写该模块或编写自己的表单身份验证模块.

问候.

asp.net ajax jquery forms-authentication http

26
推荐指数
3
解决办法
7073
查看次数

22
推荐指数
2
解决办法
1万
查看次数

更改Ajax POST的引用者

任何人都知道如果使用jquery或一般的javascript,我可以从http ajax调用中的标题更改引用者?

基本上我希望它从我的页面发送,但从另一页面有一个推荐人.任何信息都会很棒.

javascript ajax jquery http-headers

20
推荐指数
2
解决办法
5万
查看次数

如何在不使用JS发出新请求的情况下读取当前标头?

可能重复:
在Javascript中访问HTTP标头?

我知道用javascript读取当前标题的唯一方法是:

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
Run Code Online (Sandbox Code Playgroud)

但我不想提出新的请求,我想读取当前的标题.

这是真的吗?谢谢!

javascript http-headers

19
推荐指数
1
解决办法
4万
查看次数