4

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

Javascript 劫持 - 我应该担心什么时候以及担心多少

JSON 安全最佳实践

但我的基本问题是这个。

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

是什么阻止其他人打开我的网页并这样做?如果用户只需按 F12 键并打开 Chrome 开发人员工具并更改通过网络发送的数据,那么世界上所有的 jQuery 验证都是无用的,对吗?

我在这个领域还是比较新的,这让我非常担心,因为我看到“开放”协议变得越来越普遍。我还不了解 SSL(这在我要开始研究的事情清单上),所以也许这就是答案,我只是还没有深入挖掘。但是我在操纵我的页面时所拥有的灵活性水平似乎非常极端——这让我非常担心恶意的人会做什么。

4

6 回答 6

9

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

于 2013-02-01T16:36:15.593 回答
1

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

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

客户端验证应侧重于易于使用,易于纠正错误或指导用户以免犯错误。服务器应始终进行验证,但验证更严格。

于 2013-02-01T16:37:42.207 回答
1

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

接下来,如果您想保护您的服务,以便只有 user1 可以编辑 user1 的个人资料,您需要使用 OAuth(或类似协议)对 JSON 请求进行签名。

于 2013-02-01T16:41:21.637 回答
0

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

,您也可以检查并干扰像谷歌和微软这样的大网站发回的数据,你可能会有所了解。

于 2013-02-01T16:36:46.903 回答
0

您必须假设客户端是恶意的——使用 SSL 根本无法阻止这种情况。所有数据验证和授权检查都需要在服务器端完成。

于 2013-02-01T16:38:22.447 回答
0

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

于 2013-02-01T16:42:39.360 回答