Bestimmte Versionen von Windows und Browsern für RDWeb sperren

Wie jedem mittlerweile bekannt sein dürfte wurde der Support von Windows XP seit dem 8. April 2014 eingestellt, d.h. es gibt hierfür keine Sicherheitsupdates mehr. Ebenso gilt dies für den Internet Explorer, hier hat Microsoft am 12. Januar 2016 einen Cut gemacht (Support IE). Es wird hier z.B. unter Windows 7 nur noch die letzte Version, also der IE 11, unterstützt. Nutzer des IE 10 unter Windows 7 erhalten keine Updates mehr dafür.

Diese Abkündigungen bedeuten natürlich auch, dass der Admin hier mittlerweile aufpassen muss, wenn z.B. über Privatrechner auf Unternehmensressourcen zugegriffen wird. Ein veralteter Rechner mit Windows XP kann z.B. über einen VPN-Tunnel Malware ins Unternehmensnetzwerk einschleussen, oder ein nicht mehr supporteter Browser könnte eine Sicherheitslücke haben, über welche ein Kennwort ausgelesen werden kann. Leider trifft man heutzutage noch einige Rechner mit veralteten Betriebssystemen oder Browsern an.

Am Beispiel von RDWeb kann man hier mit einfachen Mitteln gegenwirken, indem man beim Aufruf der Website bestimmte Parameter überprüft. Jeder Browser übermittelt mit dem UserAgent Informationen über das System, wie z.B. die Windows-Version oder den Browser. Diese Informationen kann man dazu nutzen um den Client zu überprüfen, ob dieser die “Unternehmensrichtlinien” erfüllt. Eine Beschreibung des User-Agents findet man hier https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx. Ein UserAgent sieht z.B. wie folgt aus:

“Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; Touch; .NET4.0C; Tablet PC 2.0; InfoPath.3)”

Obiger UserAgent erzählt z.B. folgendes über den Client:

Wert Bedeutung
MSIE 9.0 Browser ist der IE 9 oder IE9 im Kompatibilitätsmodus
Windows NT 10.0 Betriebssystem ist Windows 10
WOW64 Betriebssystem ist 64-Bit
Trident/7.0 Browser ist IE 11

 

Um eine Überprüfung des Clients vor der Anmeldung am RDWeb durchzuführen muss die Login-Seite, bzw. das dahinterliegende JavaSkript, angepasst werden. Dieses liegt auf dem Server mit RDWeb im Verzeichnis C:\Windows\Web\RDWeb\Pages und heisst renderscripts.js.

Hinweis: Es ist sinnvoll die Datei renderscripts.js vorher zu sichern, bevor Änderungen an dieser vorgenommen werden, damit im Notfall diese schnell wiederhergestellt werden kann.

Zu Beginn wird darin die Funktion onPageload ausgeführt, welche zur Überprüfung des Clients angepasst werden muss. Folgender Code stellt die vollständig abgeänderte Funktion dar, grün ist hier der Originalcode und schwarz sind die Änderungen im Code.

function onPageload(e) {
//
// Browser Name in the form : ‘MSIE x.x’.
//
var iePattern = /MSIE (\d+)\./;
var ieMatch = iePattern.exec(window.navigator.userAgent);  if (ieMatch) {
if (parseInt(ieMatch[1]) <= 6)
{
ApplyPngTransparency();
}
}

// Browser and Windows check

var signinbtn = document.getElementById(‘btnSignIn’);

var min_windows = 6.1; // Versions of Windows starting at Windows 7
var min_trident = 7; // Versions of IE starting at IE 11

var tridentPattern = /Trident\/(\d+)\./;
var windowsPattern = /Windows NT (\d+\.\d+)/;

var tridentMatch = tridentPattern.exec(window.navigator.userAgent);
var windowsMatch = windowsPattern.exec(window.navigator.userAgent);

var check = false;

// Check version of Windows

if (parseFloat(windowsMatch[1]) < min_windows)
{
// Unsupported version of Windows
check = true;
}
else if (parseFloat(windowsMatch[1]) >= min_windows)
{
// Supported version of Windows now check IE

if ((ieMatch) && (parseInt(tridentMatch[1]) < min_trident))
{
// Version of IE is below minimum
check = true;
}
}

if (check)
{
// Hide login button and notify user
signinbtn.style.visibility = ‘hidden’;

alert(unescape(‘Sie verwenden leider eine nicht unterst%FCtzte Version von Windows oder Internet Explorer.\n\nSie ben%F6tigen als Betriebssystem    mindestens Windows 7 und als Browserversion den Internet Explorer 11.\n\nBei Fragen wenden Sie sich bitte an Ihre IT-Abteilung.’));
}

}

 

In der Variable min_windows wird die Minimalversion für das Betriebssystem hinterlegt, in diesem Fall ist es die Zahl 6.1 für Windows 7. Bei der Browserversion wird es etwas schwieriger, da es möglich ist im Browser über den Entwicklermodus die Browserversion zu verändern. Aus diesem Grund wird im UserAgent zusätzlich das Trident-Token hinzugefügt, welches die eigentliche Version des Browsers verbirgt. Die Version 7 steht hier in der Variable min_trident für den IE 11. Über Muster werden im Anschluß aus dem UserAgent die Windows- und Browser-Version ausgelesen und in Variablen zur späteren Verarbeitung ausgelesen.

Zunächst wird überprüft, ob die ausgelesene Windows-Version den Mindestanforderungen entspricht, falls nicht, dann wird eine check-Variable gesetzt, welche  später im Code steuert, ob eine Anmeldung erlaubt ist. Ist die Windows-Version zulässig, so wird im Anschluss daran überprüft, ob der Aufruf über den IE stattgefunden hat und das Trident-Token ausgewertet. Entspricht dies nicht der Mindestanforderung, so wird wieder die check-Variable gesetzt. Nachdem alle Überprüfungen durchlaufen sind wird anhand der check-Variable entschieden, ob die Anmeldung am System erlaubt ist oder nicht. Ist das System nicht zulässig, so wird hier der Login-Button ausgeblendet und der Benutzer erhält eine Mitteilung am Bildschirm. Dies sieht dann wie folgt aus:

rdweb_check1

Das gezeigte Skript soll als Ansatz dienen, um auf einfache Weise bestimmte Windows- oder Browser-Versionen, den Zugriff auf Unternehmensressourcen zu verweigern.

Wer mag kann dies gerne einsetzen und auch abändern, ich übernehme jedoch keinerlei Haftung für eventuelle Schäden.

leave your comment

Sicherheitsabfrage: * Time limit is exhausted. Please reload CAPTCHA.