cookie_access/index.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access - index.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* Hier ggf. eigene writelog.inc.php includen */
include "writelog.inc.php";
include "func.inc.php";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>COOKIE_ACCESS</title>
<link rel="icon" href="../favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="../apple-touch-icon.png" />
<style>
html {
height: 100%;
overflow: scroll;
}
body {
background-color: #FFE6B3;
}
div#outer {
display: table;
height: 100%;
width: 100%;
}
div#container {
display: table-cell;
text-align: center;
vertical-align: middle;
word-break: break-all;
}
</style>
</head>
<body>
<div id="outer">
<div id="container">
<img src="cookie_access.png" width="100%"/></a><br /><br />
<?php
/*
* hier übergeben wir zum Beispiel den Cookienamen, DYNDNS-USER, Remote-Addr, Datum und verschlüsseln mit KEY-LINK
* Sie können hier alles übergeben was Sie für eine Abfrage benötigen
*/
$wert="cookie_access|access-cookie|".$_SERVER['REMOTE_ADDR']."|".date("d.m.Y");
$link=my_encrypt($wert, $key_link);
echo '<h1>Webseite, Scripte absichern mit COOKIE-ACCESS</h1><br><br>';
echo '<h2>Erzeugt wurde der Wert: '.$wert.'</h2><br>';
echo 'Dieser wurde verschlüsselt zu:<br>'.$link;
echo '<br><br>';
echo '<a href="https://'.$_SERVER["SERVER_NAME"].'/cookie_access/set_cookie.php?id='.$link.'" /><h1>Klicke jetzt hier um den Cookie zu setzen!!</h1></a>';
echo '<br><br>Der Link könnte zum Setzen des Cookies auch per E-Mail oder SMS/Nachrichten verschickt werden:<br><br>https://ihredomain.tld/cookie_access/set_cookie.php/?id='.$link.'';
echo '<br><br><a href="https://event-kalender.checkip.net/show/showcookieaccess.php" /><h2>Zeige Scripte</h2></a><br><br>';
echo '<img src="Access-Cookie.jpg"/>';
?>
<br><br>
<a href="https://checkip.net/getmyowndyndns/" target="_blank" title="checkip at net"><img src="../../ev-header.png" width="50%"/></a><br /><br />
</div>
</div>
</body></html>
cookie_access/set_cookie.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access - set_cookie.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* Hier ggf. eigene writelog.inc.php includen */
include "writelog.inc.php";
include "func.inc.php";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>COOKIE_ACCESS - SETCOOKIE</title>
<link rel="icon" href="../favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="../apple-touch-icon.png" />
<style>
html {
height: 100%;
overflow: scroll;
}
body {
background-color: #FFE6B3;
}
div#outer {
display: table;
height: 100%;
width: 100%;
}
div#container {
display: table-cell;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<div id="outer">
<div id="container">
<img src="cookie_access.png" width="100%"/></a><br /><br />
<?php
/* $_REQUEST["id"] decryten */
$linkcheck = my_decrypt($_REQUEST["id"], $key_link);
/* prüfen, ob der übergebene Link gültig ist */
if ($linkcheck !== "") {
/* Zum Beispiel prüfen ob access-cookie enthalten ist.
* Oder Werte aus einm Array vergleichen,
* oder Werte aus einer Datenbank vergleichen
* do what you can and what you want
*/
if (strpos($linkcheck, "access-cookie") > 0) {
/* cookiename aus linkcheck nehmen */
list($cookiename, $dyndns, $remoteaddr, $gesetzt) = explode("|", $linkcheck);
/* Ablauf in einem Jahr plus 1 Tag um 12 Uhr */
$expire = strtotime(date("Y-m-d", (time()+(3600*24*366)))." 12:00:00");
$path = "/";
$domain = "checkip.net";
$samesite = "Strict";
$secure = true;
$httponly = true;
/* wir fügen $expire hinzu und verschlüsseln mit KEY-COOKIE */
$pass=my_encrypt($linkcheck."|".date("d-m-Y H:i:s", $expire), $key_cookie);
setcookie($cookiename,$pass, [
'expires' => $expire,
'path' => $path,
'secure' => $secure,
'httponly' => $httponly,
]);
/* Dieser Link soll nur heute gültig sein und der $cookiename soll abgefragt werden */
$link=my_encrypt(date("Ymd").'|'.$cookiename, $key_link);
echo "<h1>Cookie wurde gesetzt!</h1>";
echo "<h1>Prüfe jetzt bitte den Zugriff mit<br><br>";
echo '<a href="https://'.$_SERVER["SERVER_NAME"].'/cookie_access/cookie_access_check/?id='.$link.'" />hier klicken!!</a>';
echo "</h1>";
} else {
echo '<img src="https://'.$_SERVER["SERVER_NAME"].'/cookie_access/cookie_access_check/cookiecheckfalse.png" />';
}
} else {
echo '<img src="https://'.$_SERVER["SERVER_NAME"].'/cookie_access/cookie_access_check/cookiecheckfalse.png" />';
}
?>
<br><br>
<a href="https://checkip.net/getmyowndyndns/" target="_blank" title="checkip at net"><img src="../../ev-header.png" width="50%"/></a><br /><br />
</div>
</div>
</body></html>
cookie_access/func.inc.php – Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access - func.inc.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* key mit 16 Char */
$key_link ="😀😀😀😀 setz Dir Deinen Key 😀😀😀😀 Zum Beispiel: W2pNcvzD/CeXrUy=";
$key_cookie="😀😀😀😀 setz Dir Deinen Key 😀😀😀😀 Zum Beispiel: pNcvz/UmR0cNCeX=";
/*
* Folgende Zuweisung erspart eine Abfrage im linkwert / cookiewert
*
* key_link nur heute gültig: $key_link = date("Ymd").$key_link;
* key_cookie nur dieses Jahr gülig: $key_cookie = date("Y").$key_cookie;
*
* Wir kümmern uns nicht um die Länge von key_*, weil openssl_encrypt/_decrypt entweder kürzt oder ergänzt mit nul auf 16 Stellen
*
*/
function my_encrypt($string, $key) {
$method="aes-128-cbc";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$pass2 = openssl_encrypt($string, $method, $key, 0, $iv);
$pass=base64_encode($pass2 . '::' . $iv);
return rtrim( strtr( $pass, '+/', '-_'), '=');
}
function my_decrypt($string, $key) {
$pass2=strtr( $string, '-_', '+/') . str_repeat('=', 3 - ( 3 + strlen( $string )) % 4 );
$pass=base64_decode($pass2);
if (strpos($pass, "::") === false) { return "";}
list($pass2, $iv) = explode('::', $pass);
if (strlen($iv) <> 16) { return "";}
$method="aes-128-cbc";
return openssl_decrypt($pass2, $method, $key, 0, $iv);
}
?>
cookie_access/generate_cookie.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access - generate_cookie.php BEISPIEL
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
include("func.inc.php");
$names = [
"MUELLER",
"HAHN",
"BERNER",
"CHECKIP",
];
$i = substr(rand(), 2, 4);
foreach($names as $name) {
$code=$i.'-'.$name.'-'.substr(rand(), 2, 4).'-'.substr(rand(), 1, 4);
$encrypt = my_encrypt($code, $key_cookie);
echo 'Code: '.$code.' - encrypt: '.$encrypt."<br>";
}
?>
cookie_access/cookie_access_check/index.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access/cookie_access_check - index.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* Hier ggf. eigene writelog.inc.php includen */
include "../writelog.inc.php";
include "../func.inc.php";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>COOKIE_ACCESS_CHECK</title>
<link rel="icon" href="../../favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="../../apple-touch-icon.png" />
<style>
html {
height: 100%;
overflow: scroll;
}
body {
background-color: #FFE6B3;
}
div#outer {
display: table;
height: 100%;
width: 100%;
}
div#container {
display: table-cell;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<div id="outer">
<div id="container">
<img src="../cookie_access.png" width="100%"/></a><br /><br />
<?php
if (isset($_REQUEST["id"])) {
$linkcheck = my_decrypt($_REQUEST["id"], $key_link);
if ($linkcheck == "") { echo '<img src="cookiecheckfalse.png" /><br></div></div></body></html>'; exit; }
/* gueltig und cookiename aus linkcheck nehmen */
list($gueltig, $cookiename) = explode("|", $linkcheck);
if ($gueltig !== date("Ymd")) { echo '<img src="cookiecheckfalse.png" /><br></div></div></body></html>'; exit; }
if (isset($_COOKIE[$cookiename])) {
$cookiewert = my_decrypt($_COOKIE["cookie_access"], $key_cookie);
} else {
echo '<img src="cookiecheckfalse.png" /><br></div></div></body></html>'; exit;
}
list($cookiename, $dyndns, $remoteaddr, $gesetzt, $gueltigbis) = explode("|", $cookiewert);
echo '<img src="cookiecheck.png" width="30%" /><br><br>Cookie-Wert: '.$cookiewert.'<br><br>';
echo 'COOKIENAME: '.$cookiename.'<br>';
echo 'DYNDNS USER: '.$dyndns.'<br>';
echo 'IHRE IP: '.$remoteaddr.'<br>';
echo 'COOKIE gesetzt am: '.$gesetzt.'<br>';
echo 'COOKIE gültig bis: '.$gueltigbis.'<br>';
/* Abfrage-Beispiele */
if($remoteaddr !== $_SERVER['REMOTE_ADDR']) { echo "<br> Die im Cookie gespeicherte IP-Adresse ist nicht mit der SERVER['REMOTE_ADDR'] identisch!!<br>"; } else { echo "<br> Die im Cookie gespeicherte IP-Adresse ist mit der SERVER['REMOTE_ADDR'] identisch!!<br>"; }
if($dyndns == "access-cookie") { echo '<br> Dieser Cookie ist für RaHa ;-)<br>'; }
} else {
echo '<img src="cookiecheckfalse.png" />';
$dyndns = "test";
}
/*
* Zusätzlicher Sicherheits-Check via DYNDNS
*
* Abfragen der IP-ADDR von DYNDNS access-cookie.dyndns.checkip.net ab
*
* Du kannst Deine eigene kostenlose
DYNDNS hier bestellen: https://checkip.net/getmyowndyndns/
*
* Vor der Abfrage muss die DYNDNS upgedatet werden!!
*
* Eintrag in FritzBox unter
Freigaben DYNDNS
*
* Update mit Browser
* Aufruf: https://dyndns.checkip.net/updatedns.php?username=access-cookie&password=bekannt&IP4=89.58.47.50&IP6=2a03:4000:67:f62::1
*
*/
$dyndns_addr=gethostbyname($dyndns.'.dyndns.checkip.net');
echo '<br>Die IP-ADDR der DYNDNS '.$dyndns.'.dyndns.checkip.net ist: '.$dyndns_addr;
/* wenn die DYNDNS nicht REMOTE-ADDR ist, dann was auch immer ...
if ($dyndns_addr !== $_SERVER['REMOTE_ADDR']) { echo 'Du hast keinen Zugang zum Script';}
if ($dyndns_addr == $_SERVER['REMOTE_ADDR']) { echo 'Hurra, Du hast Zugang zum Script';}
*/
/* Prüfen $dyndns_addr bei checkip.net*/
echo '<br><a href="https://checkip.net/?iplocation&IP='.$dyndns_addr.'" target="_blank" /><h4>'.$dyndns_addr.'</h4></a>';
echo '<a href="https://checkip.net/?iplocation&NAME='.$dyndns.'.dyndns.checkip.net" target="_blank" /><h4>'.$dyndns.'.dyndns.checkip.net</h4></a>';
?>
<br><br>
<a href="https://checkip.net/getmyowndyndns/" target="_blank" title="checkip at net"><img src="../../ev-header.png" width="50%"/></a><br /><br />
</div>
</div>
</body></html>
cookie_access/cookie_access_webspace_check/.htaccess (APACHE) – Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*cookie_access.*$
RewriteRule . nocookie_htaccess.php [L]
cookie_access/cookie_access_webspace_check/nginx.txt (NGINX) – Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
#nginx
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name ...
...
error_page 404 /static/404.html;
location /access_only_with_cookie/ {
if ($cookie_cookie_access = false) {
return 307 https://event-kalender.checkip.net/cookie_access/cookie_access_webspace_check/nocookie_nginx.php;
}
}
...
}
Teste hier ohne gesetzten Cookie:
https://event-kalender.checkip.net/cookie_access/access_only_with_cookie/
es erfolgt eine Umleitung direkt zu https://event-kalender.checkip.net/cookie_access/cookie_access_webspace_check/nocookie_nginx.php
cookie_access/cookie_access_webspace_check/index.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access/cookie_access_webspace_check - index.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* Hier ggf. eigene writelog.inc.php includen */
include "../writelog.inc.php";
include "../func.inc.php";
/* Ist der Cookie vorhanden? */
if (isset($_COOKIE['cookie_access'])) {
/* Abfrage-Beipsiele
*
* Zum Beispiel prüfen ob access-cookie enthalten ist.
* Oder Werte aus einm Array vergleichen,
* oder Werte aus einer Datenbank vergleichen
*
* do what you can and what you want
*
*/
$cookiewert = my_decrypt($_COOKIE["cookie_access"], $key_cookie);
if ($cookiewert == "") { header("Location:nocookie.php"); }
list($cookiename, $dyndns, $remoteaddr, $gesetzt, $gueltigbis) = explode("|", $cookiewert);
if ($cookiename !== "cookie_access") { header("Location:nocookie.php"); }
if ($dyndns !== "access-cookie") { header("Location:nocookie.php"); }
/* IP-Vergleich mit DYNDNS, ist hier ausgeschaltet weil die IP der des Servers checkip.net entspricht
$dyndns_addr=gethostbyname($dyndns.'.dyndns.checkip.net');
if ($dyndns_addr !== $_SERVER['REMOTE_ADDR']) { header("Location:nocookie.php"); }
*/
} else {
header("Location:nocookie.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>COOKIE_ACCESS_CHECK</title>
<link rel="icon" href="../../favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="../../apple-touch-icon.png" />
<style>
html {
height: 100%;
overflow: scroll;
}
body {
background-color: #FFE6B3;
}
div#outer {
display: table;
height: 100%;
width: 100%;
}
div#container {
display: table-cell;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<div id="outer">
<div id="container">
<img src="../cookie_access.png" width="100%"/></a><br /><br />
<br><br>
<img src="../cookie_access_check/cookiecheck.png" />
<br><br>
<a href="https://checkip.net/getmyowndyndns/" target="_blank" title="checkip at net"><img src="../../ev-header.png" width="50%"/></a><br /><br />
</div>
</div>
</body></html>
cookie_access/cookie_access_webspace_check/nocookie.php - Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* cookie_access/cookie_access_webspace_check - nocookie.php
* Urheber Ralph Hahn, Seif-Wald-Ring 26, 54329 Konz-Roscheid
* Alle Rechte vorbehalten!
*
* Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Der Urheber-Hinweis ist erforderlich.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*/
/* Hier ggf. eigene writelog.inc.php includen */
include "../writelog.inc.php";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>COOKIE_ACCESS_CHECK</title>
<link rel="icon" href="../../favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="../../apple-touch-icon.png" />
<style>
html {
height: 100%;
overflow: scroll;
}
body {
background-color: #FFE6B3;
}
div#outer {
display: table;
height: 100%;
width: 100%;
}
div#container {
display: table-cell;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<div id="outer">
<div id="container">
<img src="../cookie_access.png" width="100%"/></a><br /><br />
<br><br>
<img src="../cookie_access_check/cookiecheckfalse.png" />
<br><br>
<a href="https://checkip.net/getmyowndyndns/" target="_blank" title="checkip at net"><img src="../../ev-header.png" width="50%"/></a><br /><br />
</div>
</div>
</body></html>