如何正确保护发送到服务器的查询字符串?

时间:2016-07-13 02:31:46

标签: php security

我正在创建一个社交应用程序,我想知道如何保护它的方式,如果有人,不知何故,获取我发送到服务器的参数不会搞砸我的数据库中的所有内容,即只需向具有正确参数的服务器发送请求,即可在数据库中更改和插入数据 我将首先创建Web和移动版本,并通过实施HTTPS保护从客户端到服务器的通信。但是,问题是你仍然可以通过使用像MiTM一样的代理来获取参数,就像Charles Proxy那样。 将TOTP作为另一个参数来完成工作,还是应该使用某种身份验证? 为了记录,我在服务器端使用PHP而在Android上使用Java作为Android应用程序,我将首先创建它。然后,我将在稍后创建Windows Phone和iOS应用程序 谢谢!

修改

我并没有试图阻止MiT,正如你们中的一些人所提到的那样 我知道我无法隐藏客户端中发送到服务器的参数,我也没有试图阻止它。
我想要防止的是以下几点:
我们假设应用程序发送以下字符串查询:

uid=75&deactivate=1

到以下文件:

https://www.example.com/users.php

我不希望有人做一个简单的循环并使用用户ID向服务器发送请求。它甚至不必是一个循环。每个人都可以停用随机人的帐户。或者可以通过在查询字符串中放入正确的参数来更改其信息 这件事需要有某种保护。我认为这可以通过添加另一个参数来解决,只有应用程序和服务器才知道它是有效的并且将作为某种身份验证。
解决这个问题的正确方法是什么?!

1 个答案:

答案 0 :(得分:2)

听起来你正试图解决错误的问题。

  

但是,问题是你仍然可以通过使用像MiTM一样的代理来获取参数,就像Charles Proxy那样。

如果您的威胁模型是“用户可能容易受到MitM攻击”,您可以选择:

  1. 使用CA签名的TLS证书
  2. 使用超文本严格传输安全性
  3. 使用HTTP Public-Key-Pinning
  4. 以上所有
  5. 如果您的威胁模型是“有人可能会尝试使用MitM代理来篡改其出站请求”,请不要试图阻止它。相反,验证您的输入。

    推荐阅读: