小编Sha*_*awn的帖子

HttpOnly cookie如何处理AJAX请求?

如果在具有基于cookie的访问限制的站点上使用AJAX,则JavaScript需要访问cookie.HttpOnly cookies是否可以在AJAX网站上运行?

编辑:如果指定了HttpOnly,Microsoft通过禁止JavaScript访问cookie创建了一种防止XSS攻击的方法.FireFox后来采用了这个.所以我的问题是:如果你在一个网站上使用AJAX,比如StackOverflow,那么Http-Only cookies是一个选择吗?

编辑2:问题2.如果HttpOnly的目的是阻止JavaScript访问cookie,你仍然可以通过XmlHttpRequest对象通过JavaScript检索cookie,那么HttpOnly有什么意义呢?

编辑3:以下是维基百科的引用:

当浏览器收到这样的cookie时,它应该像往常一样在以下的HTTP交换中使用它,但不能让它对客户端脚本可见.[32] 该HttpOnly标志不是任何标准的一部分,并未在所有浏览器中实现.请注意,目前没有阻止通过XMLHTTPRequest读取或写入会话cookie.[33].

我知道document.cookie当你使用HttpOnly时会被阻止.但似乎您仍然可以在XMLHttpRequest对象中读取cookie值,从而允许使用XSS.HttpOnly如何让你更安全?通过使cookie基本上只读?

在您的示例中,我无法写入您的内容document.cookie,但我仍然可以使用XMLHttpRequest对象窃取您的cookie并将其发布到我的域中.

<script type="text/javascript">
    var req = null;
    try { req = new XMLHttpRequest(); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
    req.open('GET', 'http://stackoverflow.com/', false);
    req.send(null);
    alert(req.getAllResponseHeaders());
</script>
Run Code Online (Sandbox Code Playgroud)

编辑4:对不起,我的意思是你可以将XMLHttpRequest发送到StackOverflow域,然后将getAllResponseHeaders()的结果保存到字符串中,正则输出cookie,然后将其发布到外部域.似乎维基百科和哈克斯在这一方面同意我,但我希望能够重新接受教育......

最终编辑:啊,显然这两个网站都是错误的,这实际上是FireFox中的一个错误.IE6和7实际上是目前唯一完全支持HttpOnly的浏览器.

重申我所学到的一切:

  • HttpOnly限制对IE7和FireFox中的document.cookie的所有访问(不确定其他浏览器)
  • HttpOnly从IE7中的XMLHttpObject.getAllResponseHeaders()中的响应头中删除cookie信息.
  • XMLHttpObjects只能提交给它们来自的域,因此没有cookie的跨域发布.

编辑:此信息可能不再是最新的.

cookies ajax httponly

191
推荐指数
3
解决办法
7万
查看次数

在Visual Studio中重新打开上次关闭的选项卡

有没有办法重新打开Visual Studio中最后关闭的选项卡?类似于FireFox和Chrome中的Ctrl+ Shift+ t

visual-studio

120
推荐指数
8
解决办法
3万
查看次数

Visual Studio 2005/2012:如何在同一行上保留第一个大括号?

试图让我的css/C#函数看起来像这样:

body {
    color:#222;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

body 
{
    color:#222;
}
Run Code Online (Sandbox Code Playgroud)

当我自动格式化代码.

visual-studio

112
推荐指数
4
解决办法
5万
查看次数

为什么我不能在javascript中为字符串对象添加属性?

我继承了另一个开发人员写的一些javascript代码.他不喜欢我们在整个项目中使用的网格组件,因此他决定编写自己的网格组件.他写的网格不能对日期进行排序,因为它只能绑定到字符串/数字.在使用之前,他将所有日期转换为字符串.我查看了他编写的日期函​​数的字符串格式,并认为我可以只使用原始值为字符串添加日期属性,然后在排序时查看字符串是否具有日期属性并基于此排序.但是,似乎您无法在javascript中向字符串添加属性.我不知道有些类型你不能添加属性.例如:

<html>
<script>
var test = "test";
test.test = "test inner";
console.log(test);
console.log(test.test);
</script>
Run Code Online (Sandbox Code Playgroud)

test.test将是未定义的.奇怪的.我的问题是为什么这段代码不起作用?而且,如果你能想到在该网格上排序日期的任何变通方法(除了实际绑定到日期对象而不是字符串,这将很难修复),这将是非常有用的.

javascript

61
推荐指数
2
解决办法
3万
查看次数

为什么.NET GUID中有破折号?

为什么.NET GUID中有破折号?在GUID的大多数实现中是否存在破折号,或者它只是Microsoft的东西?

签,

741ecf77-9c92-4435-8e6b-85975bd13452

.net uuid guid

50
推荐指数
6
解决办法
9427
查看次数

SQLStatement.execute() - 一个语句中的多个查询

我在SQL中编写了一个数据库生成脚本,并希望在我的Adobe AIR应用程序中执行它:

Create Table tRole (
    roleID integer Primary Key
    ,roleName varchar(40)
);
Create Table tFile (
    fileID integer Primary Key
    ,fileName varchar(50)
    ,fileDescription varchar(500)
    ,thumbnailID integer
    ,fileFormatID integer
    ,categoryID integer
    ,isFavorite boolean
    ,dateAdded date
    ,globalAccessCount integer
    ,lastAccessTime date
    ,downloadComplete boolean
    ,isNew boolean
    ,isSpotlight boolean
    ,duration varchar(30)
);
Create Table tCategory (
    categoryID integer Primary Key
    ,categoryName varchar(50)
    ,parent_categoryID integer
);
...
Run Code Online (Sandbox Code Playgroud)

我使用以下方法在Adobe AIR中执行此操作:

public static function RunSqlFromFile(fileName:String):void {
    var file:File = File.applicationDirectory.resolvePath(fileName);
    var stream:FileStream = …
Run Code Online (Sandbox Code Playgroud)

apache-flex air actionscript-3

46
推荐指数
2
解决办法
5473
查看次数

VB.NET中多行的单个语句,没有下划线字符

有没有办法在没有下划线字符的情况下跨越多行?

在诸如SQL语句之类的多行字符串中,尤其是LINQ查询,这真的很烦人.

除了更改线条时的丑陋和困难(不再排队),您不能在多行语句的中间使用注释.

我日常的个人地狱的例子.

dim results = from a in articles _
              where a.articleID = 4 _ ' articleID     - Nope, can't do this
              select a.articleName


dim createArticle as string = _
    "Create table article " & _
    "    (articleID int " & _
    "    ,articleName varchar(50) " & _
    "    )"
Run Code Online (Sandbox Code Playgroud)

vb.net

37
推荐指数
3
解决办法
11万
查看次数

Sql中列命名的最佳实践

说我有一张叫做学生的桌子.您更喜欢哪些列的命名约定?你也可以推荐自己的.

Student
-------
StudentID
StudentName
MentorID

Student
-------
StudentID
Name
MentorID

Student
-------
ID
Name
MentorID
Run Code Online (Sandbox Code Playgroud)

sql

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

Flex/Air混淆

我在Flex中写了(大部分)应用程序,我担心保护源代码.我启动了一个Trillix swf反编译器的演示,并打开了安装到我的Program Files目录的swf文件.我看到我写的所有动作包都在那里.即使有大量代码,我也不太关心软件包,因为如果没有mxml文件,它似乎仍然无法使用.我认为它们会被转换为动作脚本,或者至少我希望如此.但是,我仍然想探讨混淆.

有没有人对Flash/Actionscript 3/Flex混淆器有任何经验?你能推荐一款好产品吗?

apache-flex air obfuscation actionscript-3

21
推荐指数
2
解决办法
7963
查看次数

asp.net mvc - 需要为当前请求存储一些数据

我正在编写用户身份验证类.在请求期间有很多对当前用户的引用,所以我想将它缓存在内存中而不是调用数据库ala singleton.我正在考虑使用会话并在每个请求结束时清除它.

喜欢:

 public static User Current() {
     if (Session["current-user"] == null) {
          Session["current-user"] = GetUserFromDB(); // example function, not real
     }
     return (User)Session["current-user"];
Run Code Online (Sandbox Code Playgroud)

然后在app_end请求中:

     Session.Clear();
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

21
推荐指数
2
解决办法
4911
查看次数