2 Stimmen

Was ist der sicherste Weg, eine nicht vertrauenswürdige URL zu starten?

Es scheint, dass der allgemein akzeptierte Ansatz zum Starten einer URL darin besteht, Process.Start aufzurufen, z. B.

var url = new Uri(uriString);
Process.Start(url.AbsoluteUri);

z.B. wurde folgendes vorgeschlagen aquí .

Das Problem dabei ist, dass, wenn die URL nicht vertrauenswürdig ist, schlimme Dinge passieren können, z. B. wenn die Zeichenfolge @"c: \windows\system32\notepad.exe "Mit dem obigen Code wird Notepad gestartet, ohne dass Fragen gestellt werden.

Wenn Sie jedoch versuchen, eine lokale ausführbare Datei wie diese im Browser zu starten, werden Sie von zahlreichen Sicherheitsüberprüfungen begleitet, bevor dies geschieht.

Die Frage ist also: Wie kann dies sicher und sauber programmatisch (in C#) durchgeführt werden?

Nicht ganz so saubere Techniken haben wir in Betracht gezogen:

  • sich das Uri-Protokoll ansehen und alles blockieren, was nicht http/https ist. Das ist hacky.
  • den registrierten Browser über einen Registrierungsschlüssel finden und ihn mit der Uri in der cmd-Zeile starten. Diese Art von Code neigt dazu, bei einigen Browsern unübersichtlich und unzuverlässig zu sein.

Ich hoffe also auf eine Technik, die wie ein LaunchUrlThroughBrowser(url) wäre.

1voto

David Ebbo Punkte 41426

Es scheint, dass es keine großartige Möglichkeit gibt, dies zu tun, abgesehen von der manuellen Filterung der URL, wie in Sichere Implementierung von Process.Start für nicht vertrauenswürdige URL-Strings . Das könnte also der richtige Weg sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X