Tag: 安全

编程使用Spring Security

我在Wicket Auth Project中使用Wicket作为我的表示层,因此我将它与Spring Security集成在一起。 这是Wicket为我所authentication的方法: @Override public boolean authenticate(String username, String password) { try { Authentication request = new UsernamePasswordAuthenticationToken( username, password); Authentication result = authenticationManager.authenticate(request); SecurityContextHolder.getContext().setAuthentication(result); } catch (AuthenticationException e) { return false; } return true; } 我的Spring Security XMLconfiguration的内容是: <http path-type="regex"> <form-login login-page="/signin"/> <logout logout-url="/logout" /> </http> <global-method-security secured-annotations="enabled" /> <authentication-manager alias="authenticationManager"/> <authentication-provider […]

在Android中保护HTTP发布

我有一个非常基本的帮助类,我正在使用所有的Http获取/发布的东西。 我使用的是来自org.apache.http库的HttpGet,HttpPost和HttpClient。 我所有的东西都可以通过HTTP正常工作,但是一旦我尝试使用通过HTTPS工作的服务,执行请求时就会收到ClientProtocolExceptionexception。 唯一的例外消息是“服务器无法响应有效的HTTP响应”。 为了testing,我使用一个简单的HTML表单和使用RequestBuilder的Fiddler2从浏览器发送完全相同的有效内容。 我发送了无效和空的有效负载,甚至发送了所有以上的头文件,看看是否有什么东西是对象的方式build设请求。 我在testing中使用的所有东西都给了我一个有效的200状态HTTP响应。 这个服务只是给了我一个描述错误的结构,如果我给它一些东西而不是它所期望的。 有什么特别的我需要添加到HttpPost或HttpClient对象(S)告诉它使用HTTPS? 我是否必须明确告诉它使用不同的端口? 编辑: 我确实为https通信注册了错误的套接字工厂。 这里是更新的方法,我使用正确的套接字工厂创build我的HttpClient对象,以防万一以后有人在search这种types的问题: private HttpClient createHttpClient() { HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET); HttpProtocolParams.setUseExpectContinue(params, true); SchemeRegistry schReg = new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); return new DefaultHttpClient(conMgr, params); }

HTTPS是在开放networking中防止会话劫持的唯一防御措施吗?

因此,借助Firesheep ,公共Wi-Fi中的每个人都拥有一键式会话劫持工具。 根据我的理解,它的工作方式是简单地捕获所有stream量并抓取会话cookie(因此不会窃取密码)。 根据我的理解,这也意味着HTTPS安全login不能单独解决这个问题,因为进一步的HTTP通信会再次以明文forms包含会话Cookie。 将会话绑定到一个特定的IP地址是没有用的,因为NAT,绑定到用户代理很容易被欺骗。 那么100%HTTPS在任何时候都是防止这种会话劫持的唯一方法吗? 难道人们只是嗅探包括握手在内的整个HTTPSstream量,还是这个东西安全? (我正在考虑重播攻击,但在这方面没有任何知识。) 当然,不使用公共/开放的Wi-Finetworking是更好的select,但是我仍然对网站开发者可以保护他/她的用户感兴趣。

TCP时间戳赋予什么好处?

我有一个安全扫描发现指示我禁用TCP时间戳。 我了解推荐的原因:时间戳可用于计算服务器正常运行时间,这可能对攻击者有帮助(在http://www.silby.com/eurobsdcon05/eurobsdcon_silbersack.pdf标题为“TCP Timestamps”下的正确解释)。 但是,我的理解是,TCP时间戳旨在增强TCP性能。 当然,在成本/效益分析中,性能下降是一个很大的,可能太大的成本。 我很难理解可能有多less,如果有的话,性能成本。 hivemind中的任何节点都在帮助吗?

5位密码比大多数密码更好吗?

这是多年来一直困扰我的事情:为什么大多数在线服务都高度重视密码的熵 ,将其作为一种安全措施,并在用户select密码时加以执行? 在阅读“强大的Web密码完成任何事情”文章后,我决定提出这个问题。 (当然还有经典的Dilbert卡通 )。 在线网站的典型政策是至less需要6位或8位数字的大写+小写+数字密码。 这个长度与暴力破解的难度有些相关,比如从哈希中恢复密码。 但是猜测发生在网上的典型方式是有人试图login到服务器,经过几次尝试就可以自由拒绝。 让我们想象一下,例如,我们正在使用全数字PIN来保护一些中等规模的服务。 人们立即想到了4位或6位的引脚,但这可能不是一个好主意,因为太多的人会试图进入孩子的生日,这本质上是一个公共知识。 所以,这是我的5位密码build议。 我为每个用户保留一个“可能的攻击”标志。 用户login正确 – >确定 否则,保持https会话,并允许2更多的尝试 用户login – >确定 否则,在他们之前rest5分钟再次尝试2次 用户login – >确定 用户中断会话 – >设置标志 用户打断会话,但稍后正常login:向用户提供对话框并允许清除标志 用户用尽了上面的尝试:用链接发送电子邮件; 允许清除标志 如果月内总共有100多个标志,设置全球“可能攻击”标志,这要求没有cookie的人回答安全问题 在某些情况下自动清除用户标志(例如,用户最终从同一台计算机login) 假设用户名是已知的(请注意大多数站点不会这样)。 对一个用户的暴力攻击是无望的 – 5次尝试后你被locking,所以你有1/200000的机会。 如果您在一个月内尝试猜测密码超过200次,则标志消失,您什么也得不到。 如果您每月尝试<200个用户,一年之后,您有一个用户的几率不足1% networking钓鱼,病毒,社交工程或其他任何事情都会让你感觉好多了。 网站的大小只有在没有得到误报的情况下才有意义,那就是真正忘记密码的用户(假设每月1%),恢复它,但是不要清除标志(比方说1%的那些),当你不能自动清除标志(比如说10%)。 这使得每10 6个用户每月有10个预期的误报标志,这意味着一个中等规模的网站进入“恐慌”模式的可能性相当低,反正也不是那么糟糕。 我相信这个scheme是非常实际的。 这里有一些明显的第一个事实(更新) : 好处 :PIN更容易记住。 我相信这是一个很大的好处,因为现在可以要求用户记住你生成的密码。 我相信大多数人比任何其他types的随机密码记得5个随机数字更好。 折衷 :如果你的攻击者知道散列的PIN和盐,哈希将不会有太大的帮助。 这是有可能的,如果有人闯入你的数据库, 并知道你的腌制过程。 不过,我相信在这种情况下,标准的密码熵也无济于事。 好处 :记住随机5位数字比随机字母数字密码更快乐; […]

如何清除以前在PHP中回显的项目

在PHP中,有没有办法清除/删除所有以前的回显或打印的项目? 例如: <?php echo 'a'; print 'b'; // some statement that removes all printed/echoed items echo 'c'; // the final output should be equal to 'c', not 'abc' ?> 我的脚本使用包含function。 包含的文件不应该回显任何东西。 以防万一有人(前=黑客)尝试,我需要一种方法来删除。

我怎样才能哈希密码postgresql?

我需要在postgresql上使用salt来encryption一些密码,而且我还没有find任何相关的文档来说明如何完成这些工作。 那么我怎样才能在PostgreSQL的哈希密码(与一些盐)?

从https页面转到http页面时是否发送了HTTP标头Referer?

经过几次testing,我开始得出结论:浏览器不会发送Referer HTTP标头,只要点击https页面上的http页面即可。 这是什么安全原因? 是在标准的某个地方定义的?

示例网站与安全证书破碎

我想知道是否有人知道一个演示网站,显示HTTPSconfiguration不当或破碎的不同情况。 还是有人知道在野外的一个网站故意显示各种破损/错误configuration的HTTPS情况? …如果没有,那么如何使用search引擎来追踪这些想法呢? 我正在寻找展现破碎https行为的网站,例如: 自签名证书 凭证无效的子域名 过期的证书 带有安全和不安全内容的页面 等等… 我正在寻找HTTPS可能被错误configuration的各种方法的完整清单,理想情况下,我可以使用一些实际的例子来磨练一个抓取页面的工具,并告诉你它是否会产生任何浏览器安全错误。 (据我所知,没有这样的工具,没有人操作浏览器,任何人都知道吗?)

你将如何保密秘密数据在iPhone应用程序的秘密?

假设我需要从iPhone应用程序访问Web服务。 这个Web服务需要客户端对HTTP请求进行数字签名,以certificate应用程序“知道”共享密钥; 一个客户端密钥。 请求签名存储在HTTP标头中,并且只通过HTTP(而不是HTTPS)发送请求。 此密钥必须始终保密,但需要由iPhone应用程序使用。 那么,如果您一直被告知不要在客户端存储任何敏感信息,您将如何安全地存储这个密钥? 普通用户(99%的用户)会很高兴地使用这个应用程序。 会有人(敌人?)想要这个秘密的客户端密钥,以通过冒充的方式对服务或客户端密钥所有者造成伤害。 这样的人可能会越狱他们的电话,访问二进制文件,运行“string”或hex编辑器,并捅四周。 因此,将密钥存储在源代码中是一个可怕的想法。 另一个想法是将密钥存储在代码中,而不是string文字,而是存储在由字节文字创build的NSMutableArray中。 人们可以使用钥匙串,但由于iPhone应用程序永远不需要提供密码来存储钥匙串中的东西,我很谨慎,有人可以访问应用程序的沙箱可以并且能够简单地查看或简单地解码其中的项目。 编辑 – 所以我读了关于钥匙串的这个:“在iPhone OS中,应用程序总是可以访问自己的钥匙串项目,并且不能访问任何其他应用程序的项目。系统为钥匙串生成自己的密码,并存储密钥在设备上,这样的方式,任何应用程序都无法访问。“ 所以也许这是存储密钥的最好的地方….如果是这样的话,我应该如何使用预先input到应用程序密钥链中的密钥? 那可能吗? 否则,你怎么能在第一次启动的时候添encryption钥,而不是密钥在源代码中? 嗯.. 编辑 – 提交错误报告#6584858在http://bugreport.apple.com 谢谢。