我正在使用Swift的NSURL函数连接到一个PHP脚本,我可以使用该脚本与MySQL数据库进行交互。除了通过POST在URL中传递的变量不安全之外,一切都运行顺利。如果有人拦截这些变量,将会给我的应用程序带来巨大的安全风险。我对这个问题进行了广泛的研究,但我遇到了困难。SSL证书是否足以确保URL的安全?我不是通过文本URL传递变量,而是通过POST方法传递变量。据我所知,SSL证书为初始连接后传递的数据提供了安全性(这意味着最初通过POST和URL传递的数据是不安全的)。那么,从本质上讲,我该如何安全地将变量传递到web服务器
这是我用来建立连接的代码:
let myUrl = NSURL(string: "http://testsite.com/login.php”)
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = “username=bob&password=123"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
if let responseData = data {
let responseString = NSString(data: responseData, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: '(error)")
}
dispatch_async(dispatch_get_main_queue()) {
}
}
} else {
self.sendAlert("Error", message: "Unable to establish connection")
}
}
您可以参考raywenderlich教程来设置它的iOS部分。本教程用于ruby rails和swift之间的连接。它有登录、注册和令牌系统,还包括加密。
本教程使用httpBody来传递信息,您可以坚持使用httpBody,也可以修改为header,根据需要对代码进行个性化设置。
request.addValue("bob", forHTTPHeaderField: "username")
request.addValue("123", forHTTPHeaderField: "password") // add AES Encryption.
此外,您可以实现一个令牌系统,而不是传递您的用户名和密码。然而,您必须首先通过它才能获得代币。