使用JSON和Javascript非常困惑(并担心)安全性

时间:2013-02-01 16:34:41

标签: javascript json security

我一直在尝试对这个主题进行一些研究,甚至引用以下Stack Overflow线程:

Javascript Hijacking - When and How Much Should I Worry

JSON Security Best Practices

但我的基本问题是这个。

当我构建我的Web应用程序时,我使用的工具包括Fiddler,Chrome开发者工具,Firebug等。我会随时更改内容以进行测试。我甚至可以使用fiddler来更改发送到服务器的数据。

是什么阻止别人打开我的网页并这样做呢?如果用户可以点击F12并打开Chrome Developer工具,并更改通过网络发送的数据,那么全世界的所有jQuery验证都是无用的,对吗?

我在这个领域仍然相对较新,这让我非常担心,因为我看到“开放式”协议变得越来越普遍。我还不了解SSL(这是我开始研究的事情列表),所以也许这就是答案,我只是没有深入挖掘。但灵活性 I 过度操纵我的页面似乎非常极端 - 这让我非常担心恶意可以做什么。

6 个答案:

答案 0 :(得分:9)

您的担忧确实是合理的。这就是为什么你应该始终验证服务器上的所有内容。客户端验证应仅用于UX。

答案 1 :(得分:1)

简而言之,JavaScript的安全性基于可信赖的服务器。如果您始终相信服务器发送给您的代码,那么它应该是安全的。第三方(如广告供应商)无法从其所包含的域中获取数据。

如果服务器还向您发送用户生成的内容,特别是用户生成的代码,那么您就有潜在的安全问题。这就是XSS攻击所关注的问题(在可信环境中运行恶意脚本)。

客户端验证应侧重于易用性,易于纠正错误或引导用户,因此不会出错。服务器应始终进行验证,但验证更严格。

答案 2 :(得分:1)

验证应始终发生在服务器端,客户端验证仅对为用户提供更方便的体验有价值。您永远不能相信用户不会操纵他们的数据。 (Javascript是ClientSide)

接下来,如果您想要保护您的服务,以便只有user1可以编辑user1的配置文件,您需要使用OAuth(或类似协议)为您签署JSON请求。

答案 3 :(得分:0)

是的,没有什么可以阻止任何人干扰从浏览器发送到您的服务器的数据,这就是您不应该信任它的原因
始终检查用户的数据的真实性和有效性

还有它,你可以检查和干扰谷歌和微软等大型网站发回的数据,你可能会有所了解。

答案 4 :(得分:0)

您必须假设客户端是恶意的 - 使用SSL并不会阻止此操作。所有数据验证和授权检查都需要在服务器端完成。

答案 5 :(得分:0)

Javascript不会成为你对抗黑客的唯一防线,事实上它根本不应该用于安全。客户端代码可用于验证表单输入,以便尝试使用该页面的用户可以具有更快的响应时间,并且页面运行良好。任何试图破解您网页的人都不会关心您的网页是否有效。无论如何,进入您服务器的所有内容都应该经过验证,并且从不被认为是安全的。