Objective C-PHP:传递字符串和安全问题

时间:2010-12-29 05:30:08

标签: php iphone objective-c string

我是iphone开发的新手。我正在测试来自:

的用户名

iphone / obj-c - > php - > Database / MySql - > php - >回到iphone

我传递用户名时遇到问题。这是代码:

NSString *hostStr =[NSString stringWithFormat:@"localhost/username.php?username=%@", tf_username.text];

NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];    
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSUTF8StringEncoding];
NSLog(@"Server output: %@", serverOutput);

我的php文件(username.php)

<?php
// for testing, i simply output what i received
if(!empty($_GET['username'])){
echo $_GET['username'];
} else {
echo "No parameters";
}
?>

这是我输入时的结果:

Enter        I    Result
=============================================
test         I    Server Output: test
test test    I    Server Output: 
  1. 当我有'空格'时,它将返回空白。在PHP中有这个URLEncode,我必须首先在obj-c中编码字符串吗?

  2. 我的方法有哪些安全漏洞? (我知道有很多)

  3. 从Web服务器数据库获取数据时,有没有更好的方法/方法? (比如我的方法是:obj-c - &gt; php - &gt; obj-c)

  4. 由于

1 个答案:

答案 0 :(得分:0)

  1. 请参阅NSString的{​​{3}},这样可以正常使用。唯一的例外是它会将空格转换为%20而不是+,但您可以在编码后轻松进行字符串替换。
  2. 鉴于你还没有真正告诉我们,这很难说。假设“用户名”只是一个搜索参数而不是登录凭证,那么没有任何缺陷。也许你需要阅读stringByAddingPercentEscapesUsingEncoding:。桌面应用程序调用远程API是很正常的。我会正式化您的输入和输出,例如使用HTTP RESTful APIs或XML,如果请求/响应正文中需要任何内容​​。
  3. 同样,你正在做的是正常的。你正在创建一个API。如果您需要阅读任何内容,请阅读Web服务API(特别是REST ...我会避免被吸引到JSON,这是可怕且过于复杂的恕我直言。)
  4. PS:+URLWithString应该真正需要一个完整的网址(包括'http://')。