Tag: 安全

如何在不login的情况下保护Web服务

我有一个移动应用程序(目前IOS和即将安卓),它谈到一个Web服务。 没有login,数据不是私人的。 基本上,应用程序发布标记(lon,lat),并获取最近的25个标记以在地图上显示。 这是一个非常微不足道的应用程序,我无法想象任何人会付出巨大的努力滥用networking服务。 不过,我可以看到有人在张贴多个标记时很有趣。 最让我担心的是有人在运行一个脚本,它推动了很多请求(使用昂贵的带宽并且废my我的应用程序数据)。 我正在慢慢得出结论,这是不可靠的。 最好的答案是“不要这样做”。 不要提供没有身份validation的Web服务。 没有太多的服务如此开放。 Google的You Tube API是开放的,但大部分都不是。 不幸的是,我没有select。 所以在看了这几天之后,这是我的想法。 注意我离安全专家很远,我相信我的方法可以改进。 但是这可能会使你指向正确的方向。 希望有更多经验的人可以join并纠正/改善这一点。 我发现这篇文章和评论特别有用。 消息级别安全性 我将使用散列encryption来保护邮件。 客户端和Web服务都保留一个共享密钥的副本,这个密钥用来作为一个salt来从URL和所有的POST参数创build一个哈希。 散列作为附加parameter passing,哈希被重build并在另一端进行比较(使用共享密钥作为盐)。 这是相当不错的,直到你明白,任何移动客户端代码可以在几分钟内逆向工程。 在这一点上,这条防线完全没用。 客户端措施 客户端包括消息速率限制作为限制诚实用户发送的消息数量的措施。 再次,这对于越狱移动设备的攻击者来说毫无用处。 服务器端安全 因此,服务器端必须尽可能多地采取额外的安全措施,只要您的客户端(和共享的秘密)被破坏就可以独立运行。 这是我有什么: 一个味精属于UTC时间,用于限制重播攻击。 这应该防止攻击者反复在服务器上触发相同的消息。 服务器通过IP执行速率限制。 是的,IPs很容易被欺骗,代理交换是小孩玩,但是当你有这么less的时候,一切都会有帮助。 当然,服务器严格validation所有的参数,使用参数化的查询,并不会返回exception。 运输级别安全 不幸的是,我相当确信,如果没有注册过程,发布个人客户端SSL证书是不可能的。 而且因为我正在使用msg散列检查(而且我的数据不是私有的),所以我不完全确定SSL带到表中。 但是,我可能会使用SSL(只有一个应用程序范围的证书),因为它增加了另一个级别的安全性,易于部署,而且价格便宜(尽pipe每个msg需要花费额外的连接时间)。 我的方法中的巨大的大洞 我被警告,如果应用程序变得stream行,有人会妥协的客户共享的秘密。 只是因为他们可以,他们可能会在互联网上发布。 所以真的这一切都归结于服务器端。 不幸的是, 我无法识别和阻止攻击者 。 这我会深深的爱。 最后的请求 经过几天的研究,这是我所有的。 但我想要更多。 我特别感谢任何想法来加强服务器端。 所以,我把所有的SO点作为赏金。 是的,先生,全部97分!

什么是目前最安全的单向encryptionalgorithm?

众所周知,单向encryption是对数据库中的用户密码进行encryption的一种便捷方式。 这样,即使数据库的pipe理员也不能知道用户的密码,但必须进行密码猜测,使用相同的algorithm对其进行encryption,然后将结果与数据库中的encryption密码进行比较。 这意味着确定密码的过程需要大量的猜测和大量的处理能力。 看到计算机正在变得越来越快,math家仍在开发这些algorithm,我想知道考虑到现代计算能力和encryption技术,哪一个是最安全的。 我一直使用MD5已经有几年了,现在我想知道是否还有更多我应该做的事情。 我应该考虑一个不同的algorithm? 另一个相关的问题:一个字段通常需要多长时间才能获得这样的encryption密码? 我必须承认,我几乎不知道encryption,但我假设一个MD5散列(作为例子)可能会更长,并可能需要更多的处理能力来破解。 或者,字段的长度根本不重要,只要encryption的密码适合于它呢?

如何限制用户在PHP中的login尝试

我只是读这篇文章基于forms的网站身份validation防止快速login尝试的权威指南 。 最佳做法#1:一个短暂的时间延迟随着失败的尝试次数而增加,如: 1次失败尝试=没有延迟 2次失败尝试= 2秒延迟 3次失败尝试= 4秒延迟 4次失败尝试= 8秒延迟 5次失败尝试= 16秒延迟 等等 DoS攻击这个scheme将是非常不切实际的,但另一方面,可能是破坏性的,因为延迟呈指数级增长。 我很好奇我怎么能在PHP中为我的login系统实现这样的东西?

如何使用JavaScript读取安全的cookie

有没有什么办法用JavaScript读取安全的cookie? 我试图用document.cookie做到这一点,据我所知,这里http://securitymusings.com/article/909/secure-cookies-the-httponly-flag我不能这样访问一个安全的cookie。 任何人都可以提供我一个解决方法?

如何find授予Oracle用户的权限和angular色?

我正在使用Linux,Oracle10g。 我创build了一个名为test的用户。 并授予创build会话并为同一用户select任何字典权限。 我还将sysdba和sysoperangular色授予相同的用户。 现在我想显示授予用户的所有特权和angular色。 我发现下面的查询,但它只显示创build会话并select字典权限。 select privilege from dba_sys_privs where grantee='SAMPLE' order by 1; 请帮忙解决这个问题。 谢谢

如何获取默认java安装的cacerts的位置?

我正在寻找如何获取默认Java安装的cacerts的位置,当你没有定义JAVA_HOME或JRE_HOME 。 我需要一个至less适用于OS X和Linux的解决scheme。 是。 java -v假定工作:)

C标准库中的哪些函数通常会鼓励不好的练习?

这是由这个问题和一个特定答案的意见,我得知, strncpy不是一个非常安全的string处理函数在C中,它填充零,直到达到n ,我没有意识到的东西。 具体来说,引用R .. strncpy不会空终止,并且会将目标缓冲区的整个剩余部分填零,这是非常浪费时间的。 你可以通过添加你自己的null填充来解决前者,而不是后者。 它从未打算用作“安全string处理”function,而是用于在Unix目录表和数据库文件中使用固定大小的字段。 snprintf(dest,n,“%s”,src)是标准C中唯一正确的“安全strcpy”,但它可能会慢很多。 顺便说一句,截断本身可能是一个重大的bug,在某些情况下可能会导致特权提升或DoS,所以抛出“安全”的string函数,以截断他们的输出在一个问题不是一种方式,使其“安全”或“安全”。 相反,你应该确保目标缓冲区是正确的大小,并简单地使用strcpy(或更好,如果你已经知道源string的长度,memcpy)。 从Jonathan Leffler 请注意,strncat()在界面上比strncpy()更令人困惑 – 这个长度参数到底是什么呢? 根据你提供的strncpy()等,这不是你所期望的,所以它比strncpy()更容易出错。 对于复制string,我越来越认为有一个强有力的论点,你只需要memmove(),因为你总是提前知道所有的大小,并确保提前有足够的空间。 使用memmove()优先于strcpy(),strcat(),strncpy(),strncat(),memcpy()中的任何一个。 所以,我在C标准库上显然有点生疏。 因此,我想提出一个问题: 哪些C标准库函数被不恰当地/以可能导致/导致安全问题/代码缺陷/低效率的方式使用? 为了客观,我有一些答案的标准: 请,如果可以的话,引用背后的functiondevise理由,即其预期的目的。 请突出显示代码当前被滥用的情况。 请说明为什么这种滥用会导致问题。 我知道这应该是显而易见的,但它防止软性答案。 请避免: 关于命名职能惯例的争论(除非这明确导致混淆)。 “我更喜欢x而y” – 偏好没问题,我们都有,但是我对实际意想不到的副作用感兴趣,以及如何防范。 由于这可能被认为是主观的,并没有明确的答案,我马上标记为社区维基。 我也按C99工作。

JSON Web服务是否容易受到CSRF攻击?

我正在构build一个专门为其请求和响应内容(即没有表单编码的有效载荷)使用JSON的Web服务。 如果以下情况属实,Web服务是否容易受到CSRF攻击? 任何没有顶级JSON对象的POST请求,例如{"foo":"bar"} ,将被拒绝400.例如,带有内容42的POST请求将因此被拒绝。 任何具有application/json以外的内容types的POST请求都将被拒绝,例如,带有内容typesapplication/x-www-form-urlencoded的POST请求将被拒绝。 所有的GET请求将是安全的 ,因此不会修改任何服务器端的数据。 客户端通过会话cookie进行身份validation,web服务通过带有JSON数据的POST提供正确的用户名/密码对,例如{"username":"user@example.com", "password":"my password"} 。 辅助问题: PUT和DELETE请求是否容易受到CSRF的影响? 我问,因为它似乎大多数(所有?)浏览器不允许在HTMLforms这些方法。 编辑:添加项目#4。 编辑:到目前为止,很多好评和答案,但没有人提供了一个特定的CSRF攻击,这个Web服务是脆弱的。

何时安全启用CORS?

我正在开发一个JSON / REST Web API,我特别希望第三方网站能够通过AJAX调用我的服务。 因此,我的服务正在发送着名的CORS标题: Access-Control-Allow-Origin: * 它允许第三方网站通过AJAX调用我的服务。 迄今为止都很好。 然而,我的networkingapi的一个小部分是非公开的,需要authentication(OAuth和access_token cookie相当标准的东西)。 在我的网站的这一部分启用CORS是否安全? 一方面,如果第三方网站可能有一个也与我的服务的这部分交互的ajax客户,那将是很酷的。 然而,起源相同的原因首先在于这可能是有风险的。 您不希望任何后来访问的网站能够访问您的私人内容。 我担心的情况是,用户通过网站或通过他信任的网站login我的networkingAPI,他忘记注销。 这是否允许每个其他网站,他后来访问他的私人内容使用现有的会议? 所以我的问题: 在非公开内容上启用CORS是否安全? 如果启用了CORS的服务器通过cookie设置session_token,这个cookie是否会保存在CORS服务器或主网页服务器的域下?

Node.js应用程序的授权方法和devise模式

我正在构build一个内部企业软件平台的多页面pipe理界面。 想想大量的粘合逻辑将各种API,db查询和shell脚本捆绑在一起。 我们将使用node.js,express框架(包括jade模板)和LDAP进行authentication。 我正在努力寻找有关节点应用程序授权的devise模式和最佳实践的信息。 最好是,我想使用基于angular色的模式,因为我的用户熟悉这种方法及其照顾和喂养。 我是node.js的新手,所以请不要以为我已经看过一个模块或stream行的博客文章。 有可能是有大量的信息,我根本不知道在哪里看。 提前感谢您提供的任何信息!