我可以在Swift的Headers中使用令牌来授权数据库连接吗?

时间:2017-03-04 11:07:31

标签: php ios mysql swift security

我希望为我的应用添加一些安全性。我的思路是:

我向我的应用添加了一个令牌base64LoginString,该令牌在我的连接/ JSON请求的标头中发送。

我是否还需要将相同的令牌添加到我的PHP脚本/数据库前连接中,以便在建立与数据库的任何连接之前,它会查看php连接中的令牌是否与我的标题中的令牌匹配Swift脚本?

我对安全性全新,只是想弄清楚从哪里开始。

let username = "user"
let password = "pass"
let loginString = String(format: "%@:%@", username, password)
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginString = loginData.base64EncodedString()

let myUrl = URL(string: "https://www.mydomain.co.uk/MyApp/userLogin.php");
var request = URLRequest(url:myUrl!);

request.httpMethod = "POST"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")

request.httpMethod = "POST";
let postString = "email=\(userEmail!)&password=\(userPassword!)";
request.httpBody = postString.data(using: String.Encoding.utf8);

所以使用上面的代码,我希望令牌当前已被发送......

1)这是真的吗?

2)如何在服务器端连接上检查并验证?

3)如果这不正确,那会是更好的方法吗?

1 个答案:

答案 0 :(得分:0)

  

1)这是真的吗?

正在发送令牌,在您的代码中,您正在复制HttpMethod

  

2)如何在服务器端连接上检查并验证?

如果服务器是Linux,则可以使用tcpdump检查与服务器的条目连接。像这样的东西

tcpdump -i any tcp port 80 -w capture.cap

此命令将捕获80端口上的所有软件包并将其保存到capture.cap文件中。然后使用命令

strings capture.cap

您可以检查测试的输入连接。

如果服务器是Windows,你可以使用Wireshark接近同样的方法,并捕获80个端口数据包。

  

3)如果这不正确,那会是更好的方法吗?

我建议使用Alamofire,它是一个可以节省大量时间在http请求中的pod。 https://github.com/Alamofire/Alamofire