Ios 如果我的iPhone应用程序对我的服务器进行API调用,有人可以记录URL吗?

Ios 如果我的iPhone应用程序对我的服务器进行API调用,有人可以记录URL吗?,ios,security,logging,Ios,Security,Logging,假设我的应用程序执行以下操作: NSString *requestURL = [NSString stringWithFormat:@"http://www.myserver.com/json.php"]; NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:requestURL]]; NSString *requestDeleteURL = [NSString stringWithFormat:@"http:/

假设我的应用程序执行以下操作:

NSString *requestURL = [NSString stringWithFormat:@"http://www.myserver.com/json.php"];

NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:requestURL]];
NSString *requestDeleteURL = [NSString stringWithFormat:@"http://www.myserver.com/delete.php?deleteID=232$user=343"];
如果有人记录了我的应用程序的网络流量,他们是否能够看到有人向我发出请求,或者这是以某种方式加密的

如果这是一个post请求呢?这些参数会显示在它们的日志中吗

编辑以扩展问题-我没有使用https-我如何使用PHP安全地从数据库中删除某些内容

假设它看起来像这样:

NSString *requestURL = [NSString stringWithFormat:@"http://www.myserver.com/json.php"];

NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:requestURL]];
NSString *requestDeleteURL = [NSString stringWithFormat:@"http://www.myserver.com/delete.php?deleteID=232$user=343"];

这将允许记录我的应用程序网络流量的任何人只需构建一个脚本即可删除数据库。即使我通过URL传递某种令牌,该令牌也将可见,因此完全无用。我思考过程中的根本缺陷是什么?

请求的URL本身始终可见。您通过该请求发布或接收的内容可以使用https进行加密。因此,如果您发布或接收敏感数据(如登录或个人信息),请不要将任何您想对其他人隐藏的信息放入URL字符串中,并始终使用https进行加密

这是随请求发送POST数据的基本示例:

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
NSString *bodydata = [NSString stringWithFormat:@"data=%@",jsonString];

[request setHTTPMethod:@"POST"];
NSData *requestData = [NSData dataWithBytes:[bodydata UTF8String] length:bodydata.length];
[request setHTTPBody:requestData];

这与从HTML表单为Web服务器发送POST数据的工作原理完全相同。

是。这是一个可能的、简单的、有用的调试工具,您应该熟悉它,以便自己使用

HTTP请求很容易捕获。HTTPS流量需要稍微多做一些工作,希望最终用户能够合作,但肯定不能保护您的服务器免受您自己用户的攻击

我比较喜欢的工具是,但是有很多选择

我认为这里缺少的是服务器端身份验证和授权

您需要身份验证来识别用户是谁;这通常是响应身份验证挑战而发送的cookie或令牌,但如果您愿意放弃设备可移植性以换取不需要登录,则可以像客户端应用程序生成的令牌一样简单。关键的一点是,对于每个客户端,您都有某种不可用的秘密,而不是发送一个可预测的值,如用户id


一旦可以验证用户身份,就可以对发送到服务器的每个请求执行授权检查。例如,仅仅因为我们知道某人是谁并不意味着他们可以删除任何内容。也许用户只能删除他们创建的数据?

首先讨论一下为什么这是一个问题可能会很有用。我通常在这里看到的理由是,您有凭证或其他一些敏感数据,您希望信任客户机不要复制或操纵。那是一条死胡同;有动机发现它的用户将能够挖掘出您在客户机中包含的任何数据。如果这很重要,那么您需要找到另一个不依赖于信任客户机的安全模型。