如何使用NSURL建立与web服务器的连接,其中变量可以通过URL到PHP脚本安全地传递


How to establish a connection to a web server with NSURL in which variables can be passed securely via URL to PHP script


我正在使用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.

此外,您可以实现一个令牌系统,而不是传递您的用户名和密码。然而,您必须首先通过它才能获得代币。