当前位置: 首页 > 面试题库 >

JSON安全最佳做法?

艾凌龙
2023-03-14
问题内容

在研究JSON与XML的问题时,我遇到了这个问题。现在,选择JSON的原因之一是Java的易于转换,即使用eval()。现在,从安全角度来看,这立即使我感到潜在的问题。

因此,我开始对JSON的安全性方面进行研究,并在此博客文章中就JSON的安全性不如人们认为的那样进行了研究。这部分突出:

更新: 如果您正确地执行JSON
100%,那么您只会在顶层拥有对象。数组,字符串,数字等都将被包装。然后,JSON对象将无法执行eval(),因为JavaScript解释器会认为它正在查看的是块而不是对象。这对于防止这些攻击有很长的路要走,但是仍然最好使用不可预测的URL保护您的安全数据。

好的,这是一个很好的开始规则:顶级的JSON对象应该始终是对象,而不是数组,数字或字符串。听起来对我来说是个好规则。

关于JSON和AJAX相关的安全性,还有其他事情要做或避免吗?

以上引用的最后一部分提到了不可预测的URL。是否有人对此有更多信息,特别是您如何使用PHP?与Java相比,我在Java方面的经验要丰富得多,并且在Java中这很容易(因为您可以将整个URL映射到单个servlet),而我所做的所有PHP都将单个URL映射到了PHP脚本。

另外,您如何精确地使用不可预测的URL来提高安全性?


问题答案:

博客(CSRF)的主要安全漏洞不是特定于JSON的。相反,使用XML就像是一个大漏洞。确实,根本没有异步调用也很糟糕。常规链接同样容易受到攻击。

当人们谈论唯一的URL时,通常并不意味着http://yourbank.com/json-api/your-name/big-long-key-
unique-to-you/statement
。取而代之的是,使请求的其他特征变得唯一是更常见的。即FORM帖子中的值或URL参数。

通常,这涉及将随机令牌插入服务器端的FORM中,然后在发出请求时进行检查。

数组/对象对我来说是个新闻:

脚本标签:攻击者可以嵌入一个指向远程服务器的脚本标签,浏览器将为您有效地eval()答复,但是它丢弃了响应,并且由于JSON都是响应,因此您很安全。

在这种情况下,您的站点完全不需要使用JSON即可受到攻击。但是,是的,如果攻击者可以将随机HTML插入您的网站,那么您就敬酒了。



 类似资料:
  • 下面,我们将会回顾常见的安全原则,并介绍在使用 Yii 开发应用程序时,如何避免潜在安全威胁。 大多数这些原则并非您独有,而是适用于网站或软件开发, 因此,您还可以找到有关这些背后的一般概念的进一步阅读的链接。 基本准则 无论是开发何种应用程序,我们都有两条基本的安全准则: 过滤输入 转义输出 过滤输入 过滤输入的意思是,用户输入不应该认为是安全的,你需要总是验证你获得的输入值是在允许范围内。 比

  • Overview The term “production” refers to the stage in the software lifecycle when an application or API is generally available to its end-users or consumers. In contrast, in the “development” stage, y

  • 本篇文档的目的在于如何让系统管理员或开发者用尽可能少的时间部署一个安全的 web 站点或应用,即 SSL 和 TLS 部署最佳实践。

  • 本文向大家介绍Nginx WebServer最佳安全实践,包括了Nginx WebServer最佳安全实践的使用技巧和注意事项,需要的朋友参考一下 NGINX是一个免费的开源高性能HTTP服务器和反向代理,也称为IMAP / POP3代理服务器。NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名。在本文中,我们将解释“ Nginx WebServer最佳安全实践”。 sysc

  • 问题内容: 在不使用CMS或繁重框架的情况下,对用户进行身份验证的最佳最新库/方法是什么? 响应中应包含关于您认为应被视为涉及用户身份验证的新PHP开发标准的建议。 问题答案: OpenID是一种基于用户在常见网络服务(例如Yahoo,Google和Flickr)上现有帐户进行身份验证的方法。 登录到您的站点是基于成功登录到远程站点。 您不需要存储敏感的用户信息或使用SSL来保护用户登录。 可以在

  • 问题内容: 在我一直在构建的应用程序中,我们相当依赖于SharedPreferences,这使我思考了访问SharedPreferences时的最佳实践。例如,许多人说通过此调用可以访问它: 但是,这似乎很危险。如果您有依赖于SharedPreferences的大型应用程序,则可能会有密钥重复,尤其是在使用某些也依赖SharedPreferences的第三方库的情况下。在我看来,更好的使用方法是: