【问题标题】:How can I get a user's IP from a Blobstore upload handler?如何从 Blobstore 上传处理程序获取用户的 IP?
【发布时间】:2012-04-30 21:45:22
【问题描述】:

我正在尝试从我的上传处理程序中获取用户的 IP,但提供的唯一 IP 似乎是 0.1.0.30。有什么方法可以解决这个问题,或者有什么方法可以从上传处理程序内部获取用户的实际 IP?

【问题讨论】:

    标签: google-app-engine python-2.7 blobstore


    【解决方案1】:

    尝试在您通过create_upload_url() 生成上传网址时检查用户 IP。

    上传处理程序实际上是在上传完成后由 Blobstore 上传逻辑调用的,因此 IP 很奇怪。

    【讨论】:

    • 你会如何推荐这样做?我正在考虑使用正则表达式从create_upload_url() 调用中获取上传密钥,并将其与在数据存储中创建 URL 时的用户 IP 一起存储。上传密钥似乎是在请求标头中传递的。
    • 问题是你在上传之前有用户IP(当显示表单时),然后上传完成后你得到密钥(在上传处理程序中),但你没有得到正确的IP(GAE内部服务调用sice上传处理程序。
    • 您的 blobstore 上传处理程序还会获取所有其他表单数据,因此您可以创建一个包含 IP 地址的隐藏表单字段。
    • 这将用于验证和禁止用户,因此简单地将 IP 存储在隐藏字段中是不可接受的安全方面。我正在考虑将用户的 IP 存储在加密的隐藏字段中,然后存储 md5(md5(ip+salt)+md5(uploadkey+salt)) 的哈希值,但这似乎允许重放攻击。
    • 如果您存储了一个哈希,那么您可以在上传后使其无效(删除)。这样可以防止回复攻击。
    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多