2016-10-11 6 views
0

So habe ich eine Liste von Tausenden von URLs, auf die in meiner App zugegriffen werden kann, von denen viele unsicher sind (ATS ist derzeit ausgeschaltet), auch einige umleiten auf mehrere andere URLs. Was ich tun muss, ist einen Weg zu finden, diesen Prozess zu automatisieren, um eine Liste unsicherer Links auszuspucken. Hat jemand Ideen?Wie validiere ich eine Liste von beliebigen URLs?

+0

Es klingt als ob Sie nur ATS ausschalten müssen. In iOS 10 können Sie 'NSAllowsArbitraryLoadsInWebContent' verwenden, wenn sich Ihre unsicheren URLs nur in einer Webansicht befinden. Wenn Ihre App jedoch auf früheren Versionen als iOS 10 ausgeführt wird, ist die Deaktivierung von ATS die einzige echte Option. Ich würde mich darauf konzentrieren, Ausnahmen für Domains zu erstellen, von denen Sie wissen, dass TLS verfügbar und wichtig ist (z. B. Server, auf denen Sie APIs verwenden). – Paulw11

+0

Benötigen Sie Unterstützung für iOS 8. Ich denke, ich werde versuchen, eine Befehlszeilen-App zu schreiben, die URLs validiert . – JonahGabriel

+0

Das klingt ziemlich zerbrechlich; Was passiert, wenn sich eine dieser Websites nach der Veröffentlichung Ihrer App ändert? Ich würde ATS deaktivieren und fertig sein. – Paulw11

Antwort

1

Sie können den nscurl-Aufruf über die URLs scripten. Grundsätzlich mit einer Liste von URLs in einer txt-Datei wie folgt:

urls.txt

https://www.apple.com 
https://www.reddit.com 
http://snopes.com 
http://www.yahoo.com 
https://www.google.com 

Sie ein Skript erstellen könnte

ats_check.sh

#!/bin/sh 

while read URL 
do 
    nscurl --ats-diagnostics ${URL} 2>/dev/null > ats_results.txt 

    if grep -q "Result : FAIL" ats_results.txt; then 
     echo "${URL} failed ATS checks. run 'nscurl --ats-diagnostics ${URL}' for more details." 
    else 
     # echo "${URL} passed ATS checks." 
     echo "." 
    fi 
done < urls.txt 

rm ats_results.txt 

Wenn es im Nscurl-Aufruf ANY-Tests nicht besteht, wird die URL angezeigt.

Beachten Sie, dass nscurl Mac OS 10.11 oder höher erfordert.

+0

Auch das kann eine Weile dauern, da die ATS-Prüfungen eine Weile dauern können, besonders auf langsameren Sites. Ich habe einen Punkt für diejenigen hinzugefügt, die erfolgreich bestanden haben, aber Sie können den ganzen anderen Block entfernen, wenn Sie nur einen unserer fehlerhaften URLs drucken möchten. – wottle

0

Ich habe eine CLI-App geschrieben, die ein WebView verwendet, um alle URLs in meine Datendatei zu laden und alle URLs diesen Fehler in eine Textdatei zu schreiben.

+0

Hat mein Skript nicht für dich funktioniert? Es tut im Grunde, was Sie brauchen, ohne eine App schreiben zu müssen. Ihre Anwendung wird anderen in Zukunft beim Überlauf des Stacks nicht helfen, es sei denn, Sie veröffentlichen die Quelle und stellen einen Link zur Verfügung. – wottle

+0

@wottle Während dein Skript großartig ist, ist das, was ich brauche, etwas komplexer. Grundsätzlich sucht mein Tool im aktuellen Verzeichnis, sortiert alle CSV-Dateien nach Datum und verwendet das neueste als Eingabedatei. Das Tool wird dann 20 Webansichten starten, um zu beginnen, URLs aus einer serialisierten Warteschlange von Daten zu prüfen, die aus der Datendatei extrahiert wurden, die die URL und die zugehörige GUID enthält. Nachdem die Daten verarbeitet wurden, gibt das Tool die ungültige URL, die GUID und alle Weiterleitungen an die nicht sichere URL aus. Während all dies wahrscheinlich über Shell-Skript getan werden könnte, niemand in meinem Team wäre in der Lage, es zu pflegen. – JonahGabriel

+0

@wottle Sobald ich fertig bin, werde ich in Open Source suchen, das Tool für andere zu verwenden. – JonahGabriel

Verwandte Themen