kostenloser Webspace werbefrei: lima-city


Passwort-Sicherheitstest funktioniert nicht

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tec-fantasy

    tec-fantasy hat kostenlosen Webspace.

    Ich habe mir gerade ein Ajax/jQuery tutorial angeguckt in dem ein Passwort-Sicherheitstest erstellt wurde und habe den code sofort mal kopiert und etwas verbessert das es jetzt so aussieht:

    pwtest.html
    <html>
    	<head>
    		<title>
    		Home - Tec-Fantasy!
    		</title>
    		<meta charset="UTF-8">
    		<link rel="stylesheet" type="text/css" href="style.css">
    		<link rel="shortcut icon" href="images/favicon.png">
    		<script type="text/javascript">
    function testpw(inhalt)
    {
        if (inhalt=="")
        {
            document.getElementById("Sicherheit").innerHTML="Keine Eingabe!";
            return;
        }
        if (window.XMLHttpRequest)
        {
            // AJAX nutzen mit IE7+, Chrome, Firefox, Safari, Opera
            xmlhttp=new XMLHttpRequest();
        }
        else
        {
            // AJAX mit IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("Sicherheit").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","phppwtest.php?q="+inhalt,true);
        xmlhttp.send();
    }
    		</script>
    	</head>
    	<body align="center">
    		<br><br><br><br>
    		<a href="http://tec-fantasy.lima-city.de/"><button type="button" id="home" onClick="">Home</button></a>
    		<a href="http://tec-fantasy.lima-city.de/forum"><button type="button" id="home" onClick="">Forum</button></a>
    		<a href="http://tec-fantasy.lima-city.de/news.html"><button type="button" id="home" onClick="">News</button></a>
    		<a href="http://tec-fantasy.lima-city.de/ueber.html"><button type="button" id="ueber" onClick="">Über Uns</button></a>
    		<a href="http://tec-fantasy.lima-city.de/programme/index.html"><button type="button" id="programme" onClick="">Programme und Spiele</button></a><br>
    		<hr style="color:#ffffff; background-color:#ffffff; height:6px;">
    		<h1>Passwort Sicherheitstester</h1>
    		Der Sicherheitstester zählt die "Sicherheits Punkte" noch nicht Richtig also könnte ein Sehr sicheres<br>
    		Passwort auch mal als Unsicher gezeigt werden und andersrum!<br>
    		Schreibe einfach dein Passwort in das Feld und die Sicherheit wird ausgerechnet!<br>
    		(Wenn es nicht Sofort ausgerechnet wird Klicke neben das Feld!)<br>
    		<input type="password" onchange="testpw(this.value)"><br><br>
    		Sicherheitslevel: <span ID="Sicherheit"></span><br>
    		Bugs könnt ihr im Forum melden!
    		<hr style="color:#ffffff; background-color:#ffffff; height:6px;">
    	</body>
    </html>


    phppwtest.php
    <?php
    $passwort = $_GET['q'];
    $sicherheitszahl = 0;
    $sicherheitszahl = strlen($passwort);
    if (preg_match("/[a-z]+/", $passwort)) {
        $sicherheitszahl = $sicherheitszahl + 2;
    }
    if (preg_match("/[A-Z]+/", $passwort)) {
        $sicherheitszahl = $sicherheitszahl + 2;
    }
    if (preg_match("/[0-9]+/", $passwort)) {
        $sicherheitszahl = $sicherheitszahl + 1;
    }
    if (preg_match("/[.,;:-_ #'+*~!§$%&\/\(\)\[\]\{\}\\=?<>\|]+/", $passwort)) {
        $sicherheitszahl = $sicherheitszahl + 3;
    }
    if ($sicherheitszahl <= 5 ) {
        echo 'Level 0 - Sehr Unsicher ('.$sicherheitszahl.' Punkte)';
    }
    elseif ($sicherheitszahl <= 10) {
        echo 'Level 1 - Unsicher ('.$sicherheitszahl.' Punkte)';
    }
    elseif ($sicherheitszahl <= 15) {
        echo 'Level 2 - Mittel ('.$sicherheitszahl.' Punkte)';
    }
    elseif ($sicherheitszahl <= 20) {
        echo 'Level 3 - Sicher ('.$sicherheitszahl.' Punkte)';
    }
    elseif ($sicherheitszahl <= 25) {
        echo 'Level 4 - Sehr Sicher ('.$sicherheitszahl.' Punkte)';
    }
    elseif ($sicherheitszahl > 25) {
        echo 'Level 5 - Viel Sicherer als jetzt geht es nicht! ('.$sicherheitszahl.' Punkte)';
    }
    ?>


    So sollten die Sicherheits Punkte bei jedem Buchstaben um 2 erhöht werden, bei jeder zahl um 1 und bei jedem anderem zeichen um 3!
    Aber wenn ich jetzt als passwort eingebe
    abc oder irgendwelche 3 kleinen buchstaben zählt es für den ersten 3 und für die anderen 1 also gesammt 5! Es sollte aber für jedes 2 zählen also gesammt 6
    bei 3 großen buchstaben ist es dann aber so das doppelt so viele punkte wie bei kleinen buchstaben gezählt werden (also für den ersten ganze 6 punkte und für die anderen 2 - also dabei für den zweiten und dritten buchstaben die richtige zahl)
    Bei zeichen wie z.b. []() wird für den ersten 4 gezählt und für die anderen immer 1

    Kann mir jemand erklären warum das so ist?

    Wegen den Sicherheitsleveln könnte man jetzt auch denken die brauchen zu wenig punkte - stimmt auch wenn die punkte normal gezählt würden! Aber die Sicherheitslevel habe ich jetzt so gemacht das sie zu der jetzigen punktezählung passen!

    Also für die die die frage nicht verstanden haben nochmal kurz:
    Die Punkte für die eingegebenen Buchstaben werden falsch gezählt und ich will wissen wie ich es schaffe das sie richtig gezählt werden

    Danke jetzt schon für jede Antwort! :D
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. tec-fantasy schrieb:
    if (preg_match("/[a-z]+/", $passwort)) {
        $sicherheitszahl = $sicherheitszahl + 2;
    }
    Bei dem was du vor hast, ist dieses Konstrukt schon vom Prinzip her falsch. Was da steht heißt: Falls das Passwort Kleinbuchstaben enthält (egal wie viele), werden 2 Punkte addiert.

    Ich würde es so schreiben:
    $kleinbuchstaben=preg_replace("/[^a-z]/","",$passwort);
    $sicherheitszahl=$sicherheitszahl+strlen($kleinbuchstaben)*2;
    Es wird alles entfernt, was kein Kleinbuchstabe ist. Übrig bleibenn nur die Kleinbuchstaben. Diese werden gezählt und 2-fach zur Sicherheit aufsummiert.

    Es gibt natürlich noch einige Sonderzeichen, die du nicht gelistet hast. Diese bekommen nur einen Punkt und zwar hierdurch:
    tec-fantasy schrieb:
    $sicherheitszahl = strlen($passwort);
    Du könntest vielleicht auch für jedes Zeichen 4 Punkte geben und dann für jeden Buchstaben wieder 2 abziehen, für die Zahlen 3 abziehen usw. Am Ende bleiben die speziellen Sonderzeichen mit 4 Punkten.
  4. Autor dieses Themas

    tec-fantasy

    tec-fantasy hat kostenlosen Webspace.

    Ok danke für die hilfe! :D
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!