Logo

http://www.gdra.de - Projektseite

RaspberryPi, BananaPi, Programmierung, Let's Play

sec_pass - sichere Passwörter
verfasst am 22.12.2019 in Programmierung: php

Wegen einiger Nachfrage habe ich mich dazu entschlossen, das Script als verwendbare Web-Version zu gestalten.

Diese ist zu finden unter: http://sec_pass.gdra.de

Viel Spaß damit!



eigener Kurz-URL-Dienst
verfasst am 24.09.2019 in Programmierung: php

Was ist die Idee dahinter? Ganz einfach, man möchte sich sehr lange URL's einfach mal abkürzen. Im Idealfall kann man sich die Kurz-URL-Links so gestalten, dass man sich diese einfach merken kann.

Was braucht man dazu?
- eine Domain
- einen Server oder Hoster mit php
- ggf. eine MySQL-Datenbank
- ein wenig Zeit

Getestet ist das ganze mit php7.3, sollte auch mit php5.6 funktionieren.

Als erstes benötigt man eine Ansicht zum erstellen, nennen wir sie "url.html".

<html>
        <head>
        </head>
        <body>
                <table align="center">
                        <tr>
                                <td><input type="text" id="link" size="64"></td>
                                <td><input type="button" value="URL erstellen" onclick="url()"></td>
                        </tr>
                        <tr>
                                <td align="center" colspan="2"><br/><br/><u><b>URL:</u></b> <input type="text" id="url" onmouseover="select();" size="64" readonly></td>
                        </tr>
                </table>
        </body>
</html>

Nun haben wir erstmal eine Ansicht, mit der man arbeiten kann. Oben schreibt man die komplette URL rein, unten soll dann der Kurzlink angezeigt werden.
Als nächste benötigen wir ein Javascript, welches die Anfrage weiter gibt und die Antwort erwartet.

<script>
        function url()
                {
                        var req = null;
                        try
                                {
                                        req = new XMLHttpRequest();
                                }
                        catch (ms)
                                {
                                        try
                                                {
                                                        req = new ActiveXObject("Msxml2.XMLHTTP");
                                                }
                                        catch (nonms)
                                                {
                                                        try
                                                                {
                                                                        req = new ActiveXObject("Microsoft.XMLHTTP");
                                                                }
                                                        catch (failed)
                                                                {
                                                                        req = null;
                                                                }
                                                }
                                }

//"&" umformen, macht ein wenig Probleme beim übertragen
                        var amp = document.getElementById("link").value;
                        var anzahl = amp.split("&").length-1;
                        for (i=0;i<anzahl;i++)
                                {
                                        amp = amp.replace("&","-Ampersand-");
                                }
                        req.open("GET","url.php?link="+amp,true);
                        req.onreadystatechange = function()
                                {
                                        switch(req.readyState)
                                                {
                                                        case 4:
                                                                if (req.status == 200)
                                                                        {
//deine.url ersetzen
                                                        document.getElementById("url").value = "http://deine.url/?id="+req.responseText;
                                                                        }
                                                        break;
                                                        default:
                                                                return false;
                                                        break;
                                                }
                                }
                        req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                        req.send(null);
                }
</script>

Jetzt ist das html erstmal fertig. Jetzt kommt das php, hier die "url.php", zum Einsatz. Ich habe mich für eine Variante mit MySQL-Datenbank im Hintergrund entschieden.
Die Datenbank besteht aus 3 Spalten: id, link, url

<?php

        define("SQL_HOST","MySQL-Server"); 
        define("SQL_USER","MySQL-Nutzer");
        define("SQL_DATABASE","MySQL-Datenbank");
        define("SQL_PASS","MySQL-Passwort"); 

        function sql($abfrage)
                {
                        return mysqli_query(mysqli_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DATABASE),$abfrage);
                }
                
        function sql_assoc($abfrage)
                {
                        return mysqli_fetch_assoc(sql($abfrage));
                }

        function sql_num($abfrage)
                {
                        return mysqli_num_rows(sql($abfrage));
                }

        function sql_assign($abfrage,$wert)
                {
                        $abfrage = sql_assoc($abfrage);
                        return $abfrage[$wert];
                }
                
        function zahl($var)
                {
                        return preg_match("=^[0-9]+$=i",$var);
                }
                
        function sec_url($kb,$gb,$sz,$z,$u=0)
                {
                        if (!zahl($kb) or !zahl($gb) or !zahl($sz) or !zahl($z) or !zahl($u))
                                {
                                        return false;
                                }
                        else
                                {
                                        $url = array();
                                        $var["kb"] = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n",
                                                                                "o","p","q","r","s","t","u","v","w","x","y","z");
                                        $var["gb"] = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N",
                                                                                "O","P","Q","R","S","T","U","V","W","X","Y","Z");
                                        $var["sz"] = array("_","-");
                                        $var["z"] = array("1","2","3","4","5","6","7","8","9","0");
                                        for ($a=0;$a<$kb;$a++)
                                                {
                                                        $url[] = $var["kb"][rand(0,count($var["kb"])-(($u==1) ? 1 : 4))];
                                                }
                                        for ($a=0;$a<$gb;$a++)
                                                {
                                                        $url[] = $var["gb"][rand(0,count($var["gb"])-(($u==1) ? 1 : 4))];
                                                }
                                        for ($a=0;$a<$sz;$a++)
                                                {
                                                        $url[] = $var["sz"][rand(0,count($var["sz"])-(($u==1) ? 1 : 2))];
                                                }
                                        for ($a=0;$a<$z;$a++)
                                                {
                                                        $url[] = $var["z"][rand(0,count($var["z"])-1)];
                                                }
                                        $var = array();
                                        shuffle($url);
                                        for ($a=0;$a<count($url);$a++)
                                                {
                                                        $url_ret .= $url[$a];
                                                }
                                        $url = array();
                                        return $url_ret;
                                }
                }
                
        if (isset($_GET["link"]))
                {
//3-fache Prüfung ob Kurzlink eventuell existiert, verschiedene Variablen
                        $_GET["link"] = str_replace("-Ampersand-","&",$_GET["link"]);
                        $sec_url = sec_url(3,3,1,1,1);
                        if (sql_num("SELECT * FROM `url` WHERE `url` = '".$sec_url."'") > 0)
                                {
                                        $sec_url = sec_url(3,2,1,2,1);
                                        if (sql_num("SELECT * FROM `url` WHERE `url` = '".$sec_url."'") > 0)
                                                {
                                                        $sec_url = sec_url(2,2,1,3,1);
                                                }
                                }
//Prüfung ob der selbe Link schon existiert um doppelte Einträge zu vermeiden wird der alte Kurzlink ausgelesen
                        $da = sql_assign("SELECT `url` FROM `url` WHERE MD5(`link`) = '".md5($_GET["link"])."'","url");
                        if ($da == "")
                                {
                                        sql("INSERT INTO `url` (`link`,`url`) VALUES ('".mysql_real_escape_string($_GET["link"])."','".$sec_url."')");
                                        $da = sql_assign("SELECT `url` FROM `url` WHERE MD5(`link`) = '".md5($_GET["link"])."'","url");
                                }
                        echo $da;
                }
        else
                {
                        echo "Anweisung nicht verstanden.";
                }

?>

Damit wäre die Möglichkeit zur Erstellung von Kurz-URL-Links fertig. Jetzt muss man diese nur noch auslesen. Dafür brauchen wir eine "index.php" welche wir mit "?id=" ansprechen können.

<?php

        define("SQL_HOST","MySQL-Server"); 
        define("SQL_USER","MySQL-Nutzer");
        define("SQL_DATABASE","MySQL-Datenbank");
        define("SQL_PASS","MySQL-Passwort"); 

        function sql($abfrage)
                {
                        return mysqli_query(mysqli_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DATABASE),$abfrage);
                }
                
        function sql_assoc($abfrage)
                {
                        return mysqli_fetch_assoc(sql($abfrage));
                }

        function sql_assign($abfrage,$wert)
                {
                        $abfrage = sql_assoc($abfrage);
                        return $abfrage[$wert];
                }
                
        if (isset($_GET["id"]))
                {
                        $da = sql_assign("SELECT `link` FROM `url` WHERE MD5(`url`) = '".md5($_GET["id"])."'","link");
                        if ($da == "")
                                {
//Fehlerseite das Link nicht da ist
                                        header("Location: http://deine.url/404");
                                }
                        else
                                {
                                        header("Location: ".$da);
                                }
                }
        else
                {
//Fehlerseite das keine Anfrage bzgl. Kurzlink angegeben wurde (?id= fehlt)
                        header("Location: http://deine.url/404");
                }
                
?>

Das wars im Prinzip schon. Funktioniert sehr gut, probiert es einfach mal aus.

Das Script zum downloaden:



sichere Passwörter mit php
verfasst am 22.09.2019 in Programmierung: php

Jeder kennt das, man programmiert, macht eine neue Datenbank und möchte ein sicheres Passwort vergeben, aber sich jedes mal eines ausdenken, oder gar immer das selbe vergeben? Nein, das ist keine Option. Daher einfach einen kleinen Generator bauen und mit php ist das sehr einfach.

<?php

        function sec_pass($kb,$gb,$sz,$z)
                {
                        $pass = array();
// Variablen definieren, Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen
                        $var["kb"] = array("a","b","c","d","e","f","g","h","i",
                                                "j","k","l","m","n","o","p","q","r","s","t",
                                                "u","v","w","x","y","z","ä","ö","ü");
                        $var["gb"] = array("A","B","C","D","E","F","G","H","I",
                                                "J","K","L","M","N","O","P","Q","R","S","T",
                                                "U","V","W","X","Y","Z","Ä","Ö","Ü");
                        $var["sz"] = array("!","§","%","/","(",")","=","{","[","]","}","*","+","-","_",".",",","<",">","ß");
                        $var["z"] = array("1","2","3","4","5","6","7","8","9","0");
// jetzt alles gut per Zufall entscheiden lassen
                        for ($a=0;$a<$kb;$a++)
                                {
                                        $pass[] = $var["kb"][rand(0,count($var["kb"])-1)];
                                }
                        for ($a=0;$a<$gb;$a++)
                                {
                                        $pass[] = $var["gb"][rand(0,count($var["gb"])-1)];
                                }
                        for ($a=0;$a<$sz;$a++)
                                {
                                        $pass[] = $var["sz"][rand(0,count($var["sz"])-1)];
                                }
                        for ($a=0;$a<$z;$a++)
                                {
                                        $pass[] = $var["z"][rand(0,count($var["z"])-1)];
                                }
                        $var = array();
// jetzt alles gut durchschütteln
                        shuffle($pass);
                        for ($a=0;$a<count($pass);$a++)
                                {
                                        $pass_ret .= $pass[$a];
                                }
                        $pass = array();
                        return $pass_ret;
                }

        echo sec_pass(12,6,2,12); // ergibt ein Passwort mit 12 Kleinbuchstaben, 6 Großbuchstaben, 2 Sonderzeichen, 12 Zahlen

?>


Die Passwörter gut abspeichern, diese kann man sich nicht merken. Die Länge ist variabel, ebenso die Anzahl der jeweiligen Komponenten. Probiert euch aus.


Omega-Day Planetenkonfigurator - Update 1.01 online

Omega-Day Runde 23 ist gestartet

Omega-Day Planetenkonfigurator Runde 23

Projekt StarWalker - Ein Neubeginn

ssh aktivieren bei Rasperian

Allgemein (3)

BananaPi und RaspberryPi (2)
~~> Rasperian (2)

Omega-Day (3)
~~> Omega-Day 1.0 (3)

Programmierung (5)
~~> InfoPi (1)
~~> Projekt Starwalker (1)
~~> php (3)

sec_pass.gdra.de - sichere Passwörter

Projekt Starwalker - Browsergame

Omega-Day - Browsergame

[+] Juli 2020 (3)

[+] März 2020 (1)

[+] Dezember 2019 (3)

[+] Oktober 2019 (1)

[+] September 2019 (2)

[+] August 2019 (1)

[+] Juli 2019 (2)

Datenschutzerklärung

Impressum

xapf.de

©2004-2024 Peter Höche | http://www.gdra.de | Version: 2019-1.02 | Impressum | Datenschutz