Хранение чувствительной информации в Binary Cookies
Критичность: ИНФО | |
Способ обнаружения: DAST, ФАЙЛЫ ПРИЛОЖЕНИЯ |
Описание
Приложение не отключает хранение значений Cookies при работе с WebView.
При использовании WebView (это касается как UIWebView, так и WKWebView) необходимо помнить, что значения Cookies, полученные при посещении сайта, сохраняются локально в файле специального формата Cookies.binarycookies
. При этом в данных значениях могут быть и чувствительные данные, к примеру, сессионные идентификаторы или токены для доступа к сервису.
Рекомендации
При правильном использовании необходимо ограничивать хранение Cookie временем, в которое они используются. Обычно при закрытии WebView эти данные больше не нужны. А лучше всего отключить использование Cookie вообще.
Как пример, можно отключить хранение:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func loadView()
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "http://example.com")
var myRequest = URLRequest(url: myURL!)
myRequest.httpShouldHandleCookies = false
webView.load(myRequest)
}
}
Для удаления значений Cookie (например, при логауте из приложения или его закрытии/открытии):
let storage = HTTPCookieStorage.shared
if let cookies = storage.cookies{
for cookie in cookies {
storage.deleteCookie(cookie)
}
}