我想为我的应用程序使用WebSockets进行进程间通信(守护进程< – > WebGUI和守护进程< – > FatClient等)。 在testing期间,我尝试通过websocket.org上的JavaScript WebSocket客户端( http://www.websocket.org/echo.html )连接到本地运行的Web套接字服务器(ws:// localhost:1234)。 我现在的问题是: 为什么这可能? 在浏览器中是否没有实施跨源策略(这里是Linux上的FF29)? 我问,因为如果websocket.org是邪恶的,它可以尝试与我的本地WS服务器进行通信,并redirect它从本地收到的每个消息到任何其他服务器: 本地WebSocket服务器浏览器恶意Web服务器 在http://evil.tld的ws:// localhost:1234 | | | | | —— [GET /] ———> | | | <—– [HTML + EvilJS] —- | | <—— [连接ws:// ..] —- | | | <—- [某个通讯] – > | | | | —- [邪恶转] […]
在改进我们正在开发的iOS应用程序的安全性的同时,我们发现需要对服务器的SSL证书进行PIN(全部或部分)以防止中间人(man-in-the-middle)攻击。 即使有不同的方法来做到这一点,当你search这个我只find钉住整个证书的例子。 这种做法会带来一个问题:一旦证书更新,您的应用程序将无法再连接。 如果您select固定公钥而不是整个证书,您将会发现自己(我相信)处于同样安全的状况,同时在服务器中的证书更新更有弹性。 但是,你如何做到这一点?
为了生成一个32字符的令牌来访问我们的API,我们目前使用: $token = md5(uniqid(mt_rand(), true)); 我已经读过这种方法不是基于系统时钟的密码保护,而且openssl_random_pseudo_bytes会是一个更好的解决scheme,因为它很难预测。 如果是这种情况,等效代码是什么样的? 我想这样的事情,但我不知道这是对的… $token = md5(openssl_random_pseudo_bytes(32)); 还有什么长度是有道理的,我应该传递给函数?
通过查看Gmail的Cookie,可以轻松查看“记住我”Cookie中存储的内容。 用户名/一次性访问令牌。 在用户名是秘密的情况下,它可以以不同的方式实现。 但是无论如何…这个东西不是非常高的安全性:你偷了cookies,你准备好了。 我的问题是在function方面,但是:什么时候你擦他们的访问令牌? 如果用户login而不点击另一台机器上的“记住我”,是否应该使所有机器上的访问令牌失效? 我在问,这是如何实施的,以及如何实施。
可能重复: 我需要在Python中安全地存储用户名和密码,我有什么select? 我正在寻找一种方法来安全地存储我打算在某些Python脚本中使用的密码。 我将login到不同的东西,我不想将密码作为纯文本存储在脚本本身。 相反,我想知道是否有任何能够安全地存储这些密码的东西,然后使用像我可以input到脚本开始的主密码的东西来检索它们。
由于这个问题比较stream行,所以我认为给它一个更新是很有用的。 让我强调AviD给这个问题的正确答案 : 你不应该在你的cookie中存储任何需要encryption的数据。 相反,在cookie中存储大小适中的(128位/ 16字节)随机密钥,并将要保持安全的信息存储在服务器上(由cookie的密钥标识)。 我正在寻找关于encryptioncookies的“最好的”encryptionalgorithm的信息。 我有以下要求: 它一定是快的 encryption和解密的数据将(几乎)完成每一个请求 它将在小数据集上运行,通常是大约100个字符或更less的string 它必须是安全的,但它不像我们正在确保银行交易 我们需要能够解密这些信息,以便SHA1等等。 现在我读了Blowfish是快速和安全的,我已经读了AES是快速和安全的。 随着河豚具有较小的块大小。 我认为这两种algorithm都提供了足够的安全性? 所以速度会成为决定性的因素。 但是我真的不知道这些algorithm是否适合小string,以及是否有更好的algorithm来encryptioncookie。 所以我的问题是: 什么encryptionalgorithm最适合encryptioncookie数据? 更新 更准确地说,我们要encryption2个cookie:一个带有会话信息,另一个带有“记住我”的信息。 该平台是Linux上的VPS上的PHP作为apache模块。 更新2 我同意Cletus将任何信息存储在cookie中是不安全的。 但是,我们有要求实施“记住我”function。 接受的方法是设置一个cookie。 如果客户提供这个cookie,他/她可以(几乎)相同的权限访问系统,就像他/她提供有效的用户名密码组合一样。 所以我们至less要encryptioncookie中的所有数据,以便: a)恶意用户无法读取其内容, b)恶意用户不能制造自己的cookie或篡改它。 (在我们做任何事情之前,所有来自cookies的数据都经过了消毒和检查的有效性,但这是另一回事) 会话cookie只包含sessionId / timestamp。 它可能可以使用没有encryption,但我认为没有encryption的危害吗? (除了计算时间)。 所以鉴于我们必须在cookie中存储一些数据,encryption它的最好方法是什么? 更新3 对这个问题的回答使我重新考虑了所select的方法。 我确实可以做到这一点,而不需要encryption。 我不应该对数据进行encryption,而应该只发送没有意义的数据而无法猜测 。 不过,我也很茫然: 我认为encryption使我们能够将数据发送到BigBadWorld™,并且仍然(相当)地确信没有人能够读取或篡改数据。 难道那不是encryption的全部? 但是下面的反应会推动:不要相信encryption来实现安全。 我在想什么?
我一直在研究一个程序来从dynamicWeb应用程序提取信息,程序工作正常,直到我设置我的Tomcat服务器使用自签名(因此,不可信)的证书使用SSL。 错误的堆栈跟踪是: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1584) at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174) at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:848) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:106) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:877) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1089) at […]
我想弄清楚如何对我的控制器的URL进行适当的保护。 以防万一有人改变事情,并意外删除安全设置。 我的控制器方法如下所示: @RequestMapping("/api/v1/resource/test") @Secured("ROLE_USER") public @ResonseBody String test() { return "test"; } 我设置了一个WebTestEnvironment,如下所示: import javax.annotation.Resource; import javax.naming.NamingException; import javax.sql.DataSource; import org.junit.Before; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.FilterChainProxy; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import […]
我对消息摘要的理解是,它是与encryption数据一起发送的一些数据的encryption散列,因此您可以validation数据没有被篡改。 这个和消息authentication码(MAC)和散列MAC(HMAC)之间有什么区别?
所有开发人员都面临的基本问题是:无论何时用户提交表单,密码都是通过networking发送的,并且必须受到保护。 我开发的网站没有HTTPS。 所有者也不想购买SSL证书,也不想购买自己的SSL证书。 所以我想在提交表单时保护通过HTTP使用JavaScript发送的密码。 渴望downvoters: 如何通过HTTP安全地发送密码? 没有给出任何明智的解决办法,我处于另一种情况。 如果我使用MD5,则可以反转该密码string。 那么nonce / HMAC呢? 任何可用的Javascript库? 或者你有什么build议/暗示来解决? 提前致谢!