如何确保我的AJAX请求源自Python中的同一服务器
我已经提出了一个有关IP身份验证的问题:
TastyPie Authentication from the same server
但是,我需要更多的东西! IP地址可能很容易欺骗。 情况:我的API(TastyPie)和客户端应用(在javascript中)位于同一服务器/网站/域。我的用户不登录。我想在我的javascript客户端使用我的API。 问题:如何确保(身份验证)我的AJAX请求来自同一台服务器? 我使用Tatypie。我需要验证,客户端的请求是在同一个服务器/域等。我不能使用“登录会话”,因为我的用户不登录。 我看过私钥和生成签名,但他们可以查看在javascript中使该方法不安全。如果我以一种方式请求签名的形式服务器(隐藏的私钥在一些python代码)任何人都可以做相同的http请求get_signature我的javascript,因此打败了点。 我也试图让Django视图把视图中的签名消除了需要进行get_signature调用。这是安全的,但意味着我现在必须刷新页面每次得到一个新的签名。从用户的角度来看,只有第一次调用API才能工作,之后他们需要刷新,再次毫无意义。 我不能相信我是唯一有这个要求的人。这是我相信的常见情况。请帮助:)在Tastypie中使用自定义身份验证的示例也将受到欢迎。 谢谢 添加:
根据您的基础设施@ dragonx的答案可能最感兴趣。
我的2c 您想要确保只有客户访问您的网站才能使用API???机器人,机器人,爬行器是否与客户端在同一类别?还是我错了?这可以很容易地利用,以防你真的想要确保它真的。
也许不是,但正如你可以看到,你很容易对你的API的几个攻击,这可能是一个人不分享你的设计,使安全更严格的auth。 编辑 因为我们在谈论AJAX请求,IP部分与此有什么关系? IP将永远是客户的IP!所以可能,你想要一个公共API … >我会用tokens / session / cookie部分。 为了克服刷新令牌的问题,我只需这样做: >客户访问网站 – >服务器生成API TOKEN INIT – >客户端获得API TOKEN INIT,它仅对启动1个请求有效。 – >客户端使用API?? TOKEN INIT – >服务器检查API TOKEN INIT和限制 – >服务器接受请求 – >服务器返回API TOKEN – >客户端消耗响应数据并存储API TOKEN以供进一步使用(将通过JS存储在浏览器内存中) 第一个令牌是在客户端访问时通过服务器生成的。 这样你不需要刷新。 当然,上述情况可以仅用一个令牌和如上所述的时间限制来简化。 当然,上述情况很容易使用高级抓取工具等,因为您没有身份验证。 当然一个聪明的攻击者可以从服务器抓取令牌,并重复这些步骤,但是,然后你已经有那个问题从开始。 一些额外的点 >如提供的意见,关闭对API的写入。如果你对你的实现有怀疑(如果不使用auth)或者额外的安全性,你不想成为DOS攻击的受害者 仅供参考GAE云存储使用signed_urls为同一目的的种类。 希望它有帮助。 PS。关于IP欺骗和防御欺骗攻击维基百科说,所以包不会返回给攻击者:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |