JavaScript注入安全性解决方案

时间:2018-12-14 14:50:23

标签: javascript python security

简而言之,我的问题是:“我如何验证哪些客户端消息来自我的代码,哪些来自黑客?”

我已经阅读了很多有关Javascript注入的文章,并在StackOverflow上阅读了很多答案。不幸的是,总是给出的答案是“永远不信任客户,总是对请求进行身份验证”。听起来像是很好的建议,但我不知道如何将其应用于我的情况。我试图关闭我的服务器端代码的所有客户端访问点,但是我仍然有一个,并且我需要一些保护它的帮助。这是我的情况:

  • 我有两个网站www.main_site.com和www.storage.com
  • 出于我没有时间参与的原因,www.storage.com可以控制数据库和其他各种数据存储设备,我不希望任何人动手。
  • www.main_site.com拥有对这些数据库之一的共享访问权,在该数据库中,我有一个运行周期的键控代码,该键控代码是随着每个请求从www.main_site.com发送到www.storage.com的。如果请求缺少键码,则会显示404页面
  • 在www.main_site.com的客户端JS中,我向www.storage.com发出了AJAX请求,要求它生成一个密钥代码,将该密钥代码放入共享数据库中,然后告诉我该密钥的位置。数据库中的键码。
  • 然后客户端JS向main_site.com的服务器发出一个WebSocket请求,然后服务器搜索数据库并找到键码,然后将其返回给客户端。
  • 然后,客户端使用查询和键码向www.storage.com发出GET请求。我在main_site.com客户端中的代码如下:

    $.get("http://www.storage.com/make_code", function (location) {
        socket.emit("get_code", location, function (code) {
            $.get("http://www.storage.com/do_stuff?input="+input+"&code="+code, function (response) {
                //here I do whatever with the response
            }
        }
    }
    

我知道这段代码有很多错误,但是我修补了很多漏洞。通过使用CORS策略以及其他补丁程序,我已经使www.storage.com仅接受来自www.main_site.com的请求。主要是,我看到的最后一个大漏洞是我现在要解决的一个漏洞,该漏洞是使用在Chrome或Firefox上的开发工具插入JS的人,该JS将调用所有这些漏洞并模拟一个真实的调用。如何在此处实施服务器端身份验证?我并不特别介意有人调用第一个$ .get,因为它只会生成一个代码并返回其在数据库中的位置。我将多余的用于测试目的。但是,一旦他们调用了socket.emit,他们就可以做任何他们想做的事情。我有什么选择,也许可以举一个例子,说明如何在JavaScript或Python中实现您的建议(www.storage.com在Python中)。谢谢!

-编辑- 现在,我可以转到Chrome开发者工具控制台并完全输入上面的代码来入侵自己的网站。我无法阻止其他人这样做,那么通常使用哪些验证技术?

2 个答案:

答案 0 :(得分:1)

有2种情况:

您希望某些用户从storage.com获取一些数据

您必须确保与main_site.com的随机用户共享的资源不敏感。如果您想只允许某些用户访问storage.com上的某些数据X,则他们必须提供一些凭据Y。然后将Y映射到X,并检查每次调用是否一切正常。

不能不能让js单独提供这些凭据,必须暗含用户。

您要依靠storage.com上的数据执行自动任务

Js调用main_site.com后端。它通过安全通道(您可以使用长共享令牌和https)从storage.com检索数据。

main_site.com然后仅向前端提供有用的|不敏感|预处理的数据

答案 1 :(得分:1)

  

-编辑-现在,我可以转到Chrome开发者工具控制台并完全输入上面的代码来入侵自己的网站。

这就是残酷的事实……您可以使其很难被黑客入侵,但您不能使其成为不可能!!!

对于Web应用程序而言,这是正确的,对于移动应用程序而言,已经存在一种解决方案,但是一旦超出您的情况,我就不会对此进行深入研究。

  

我无法阻止其他人这样做,那么常用的验证技术有哪些?

您可以阅读this series的 有关移动Api安全技术的文章,以了解如何实现和绕过它们。本文更多地是针对移动应用程序的API的上下文,但是其中提到的大多数技术也可以在Web应用程序中应用。