听着Scott Hanselman对Stack Overflow团队的采访( 第1部分和第2 部分 ),他坚持认为SQL服务器和应用程序服务器应该在不同的机器上。 这只是为了确保如果一台服务器被攻破,两个系统都不可访问? 安全问题是否超过了两台服务器的复杂性(额外的成本,两者之间的专用networking连接,更多的维护等),特别是对于一个小型应用程序,哪个部件都没有使用太多的CPU或内存? 即使有两台服务器,一台服务器被攻破,攻击者仍然可能会造成严重的破坏,无论是删除数据库,还是搞乱应用程序代码。 如果性能不是问题,为什么会这么大?
我的公司一直在评估Spring MVC,以确定我们是否应该在下一个项目中使用它。 到目前为止,我喜欢我所看到的,现在我正在看看Spring Security模块,以确定它是我们可以/应该使用的东西。 我们的安全要求是相当基础的。 用户只需提供用户名和密码即可访问网站的某些部分(如获取有关其帐户的信息); 并且网站上有一些页面(常见问题,支持等),匿名用户应该被授予访问权限。 在我创build的原型中,我一直在Session中为已authentication的用户存储一个“LoginCredentials”对象(它只包含用户名和密码) 例如,一些控制器检查这个对象是否在会话中以获得对login用户名的引用。 我期待用Spring Security取代这个本土化的逻辑,而不是去除任何types的“我们如何跟踪login用户?”的好处。 和“我们如何authentication用户?” 从我的控制器/业务代码。 Spring Security似乎提供了一个(每线程)“上下文”对象,可以从应用程序的任何位置访问用户名/主体信息。 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); …这似乎是非常像spring一样,因为这个对象是(全局)单身,在某种程度上。 我的问题是:如果这是在Spring Security中访问经过身份validation的用户的信息的标准方法,那么在SecurityContext中注入一个Authentication对象的方法是什么,以便在unit testing需要authentication用户? 我是否需要在每个testing用例的初始化方法中进行连线? protected void setUp() throws Exception { … SecurityContextHolder.getContext().setAuthentication( new UsernamePasswordAuthenticationToken(testUser.getLogin(), testUser.getPassword())); … } 这似乎过于冗长。 有更容易的方法吗? SecurityContextHolder对象本身看起来非常像Spring一样…
我意识到OAuth规范没有规定ConsumerKey,ConsumerSecret,AccessToken,RequestToken,TokenSecret或Verifier代码的来源,但我很好奇是否有任何最佳做法来创build安全的令牌(特别是令牌/秘密组合)。 正如我所看到的,有几种创build令牌的方法: 只需使用随机字节,存储在关联到消费者/用户的数据库中 散列一些用户/消费者特定的数据,存储在与消费者/用户相关的数据库中 encryption用户/消费者特定的数据 (1)的优点是数据库是似乎最安全的信息的唯一来源。 比(2)或(3)更难攻击。 散列真实数据(2)将允许从可能已知的数据重新生成令牌。 (1)可能不会提供任何好处,因为无论如何都需要存储/查找。 比(1)更多的CPU密集度。 encryption真实数据(3)将允许解密以获知信息。 这会比(1)和(2)需要更less的存储和潜在的更less的查找,但是可能不太安全。 还有其他方法/优点/缺点应该考虑吗? 编辑:另一个考虑是在令牌必须有某种随机值,因为必须有能力过期和重新发布新的令牌,所以它不能只包含真实的数据。 关注问题 : 是否有一个最小令牌长度,以显着encryption安全? 据我所知,更长的令牌秘密会创build更安全的签名。 这种理解是否正确? 从哈希的angular度来看,使用特定的编码是否有优势? 例如,我看到很多使用hex编码的API(例如GUIDstring)。 在OAuth签名algorithm中,令牌用作string。 使用hexstring,可用字符集将比使用Base64编码时小得多(更可预测)。 在我看来,对于两个长度相等的string,具有较大字符集的string将具有更好/更宽的散列分布。 在我看来,这会提高安全性。 这个假设是否正确? OAuth规范在11.10的秘密熵中提出了这个问题。
我基本上是准备把短语放在数据库中,他们可能是畸形的,所以我想存储它们的简短散列(我将只是比较它们是否存在,所以散列是理想的)。 我假设MD5在十万次以上的请求中相当慢,所以我想知道什么是最好的方法来散列短语,也许推出我自己的散列函数或使用hash('md4', '…'将更快结束? 我知道MySQL有MD5(),所以这将补充一点速度的查询结束,但也许还有一个更快的哈希函数在MySQL中,我不知道这将与PHP的工作..
我一直在阅读关于针对Windows XP和Windows Server 2003上的GDI +的老版本攻击,这些攻击称为我正在进行的项目的死亡JPEG。 这个漏洞在下面的链接中得到很好的解释: http : //www.infosecwriters.com/text_resources/pdf/JPEG.pdf 基本上,一个JPEG文件包含一个称为COM的部分,其中包含一个(可能是空的)注释字段和一个包含COM大小的两个字节的值。 如果没有注释,则大小为2.读取器(GDI +)读取大小,减去两个大小,然后分配适当大小的缓冲区以复制堆中的注释。 攻击涉及在该字段中设置值0 。 GDI +减2 ,导致值为-2 (0xFFFe) ,由memcpy转换为无符号整数0XFFFFFFFE 。 示例代码: unsigned int size; size = len – 2; char *comment = (char *)malloc(size + 1); memcpy(comment, src, size); 注意到第三行的malloc(0)应该返回一个指向堆中未分配内存的指针。 如何写0XFFFFFFFE字节( 4GB !!!!)可能不会崩溃程序? 这是否超出堆区,并进入其他程序和操作系统的空间? 那会发生什么? 正如我所了解的memcpy ,它只是从目的地复制n字符到源。 在这种情况下,源应该在栈上,堆上的目的地, n是4GB 。
我喜欢智威汤逊,和他合作非常有趣。 我的问题是,如果我得到一个智威汤逊,我可以解码有效载荷,这是如何安全? 难道我不能将标记从标题中取出,解码并更改有效载荷中的用户信息,并使用相同的正确密码进行发送? 我知道他们一定是,我真的很想了解这些技术。 我错过了什么? 谢谢!
我想encryption一个二进制文件。 我的目标是防止任何人读取没有密码的文件。 哪个更好的解决scheme,AES或Blowfish具有相同的密钥长度? 我们可以假设攻击者有很多资源(软件,知识,金钱)来破解文件。
我刚刚开始考虑api密钥和密钥如何工作。 就在2天前,我注册了Amazon S3并安装了S3Fox Plugin 。 他们要求我的访问密钥和秘密访问密钥,这两个都需要我login访问。 所以我想知道,如果他们要求我提供我的密钥,他们必须把它存储在某个地方? 和问我信用卡号码或密码并将其存储在自己的数据库中基本上不是一回事吗? 秘密密钥和api密钥应该如何工作? 他们需要如何保密? 这些应用程序使用秘密密钥以某种方式存储它吗? 感谢您的洞察力。
我将一些HTML加载到iframe中,但是当引用的文件使用http而不是https时,出现以下错误: [blocked] {current_pagename}中的页面从{referenced_filename}中运行不安全的内容 有什么办法可以关掉它或以任何方式解决它? iframe没有src属性,内容使用如下设置: frame.open(); frame.write(html); frame.close();
我正在使用Backbone.js和Tornado Web服务器。 在Backbone中接收集合数据的标准行为是作为JSON数组发送。 另一方面,由于以下漏洞,Tornado的标准行为是不允许JSON Array: http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx 相关的是: http : //haacked.com/archive/2009/06/25/json-hijacking.aspx 对于我来说,当它真的是一个对象列表的时候,不必把我的JSON包装在一个对象中就更自然了。 我无法在现代浏览器(即当前的Chrome,Firefox,Safari和IE9)中再现这些攻击。 同时,我无法确认现代浏览器已经解决了这些问题的任何地方。 为了确保我不会被任何可能的糟糕的编程技巧或不良的Googlesearch技巧误导: 这些JSON劫持攻击今天在现代浏览器中仍然是个问题吗? (注意:对于可能的重复对不起, 现在的浏览器有可能做'JSON劫持'吗?但是由于接受的答案似乎没有回答这个问题 – 我想是时候再问一遍,得到一些更清楚的解释。)