Browse code

remove option obsolete in PHP 7

Hanno Böck authored on20/01/2021 12:56:14
Showing1 changed files
... ...
@@ -32,7 +32,6 @@ function strong_password($password, $user = array())
32 32
         curl_setopt($req, CURLOPT_TIMEOUT, 5);
33 33
         curl_setopt($req, CURLOPT_FOLLOWLOCATION, 0);
34 34
         curl_setopt($req, CURLOPT_POST, 1);
35
-        curl_setopt($req, CURLOPT_SAFE_UPLOAD, 1);
36 35
         curl_setopt($req, CURLOPT_POSTFIELDS, "password=".urlencode($password));
37 36
         $result = chop(curl_exec($req));
38 37
         DEBUG($result);
Browse code

make sure POST data is sent urlencoded, our python-based password checker does not support form-data

Hanno Böck authored on20/01/2021 12:54:54
Showing1 changed files
... ...
@@ -33,7 +33,7 @@ function strong_password($password, $user = array())
33 33
         curl_setopt($req, CURLOPT_FOLLOWLOCATION, 0);
34 34
         curl_setopt($req, CURLOPT_POST, 1);
35 35
         curl_setopt($req, CURLOPT_SAFE_UPLOAD, 1);
36
-        curl_setopt($req, CURLOPT_POSTFIELDS, array("password" => $password));
36
+        curl_setopt($req, CURLOPT_POSTFIELDS, "password=".urlencode($password));
37 37
         $result = chop(curl_exec($req));
38 38
         DEBUG($result);
39 39
     }
Browse code

fix regular expression (was rejecting -)

Hanno Böck authored on15/12/2020 17:42:07
Showing1 changed files
... ...
@@ -243,7 +243,7 @@ function filter_ssh_key($key)
243 243
         system_failure("Ungültiger SSH-Key!");
244 244
     }
245 245
 
246
-    if ((count($keyparts) === 3) && (preg_match("/^[a-zA-Z0-9@.-_]+$/", $keyparts[2]) === 0)) {
246
+    if ((count($keyparts) === 3) && (preg_match("/^[a-zA-Z0-9@._-]+$/", $keyparts[2]) === 0)) {
247 247
         system_failure("Ungültige Zeichen im Kommentar des SSH-Keys!");
248 248
     }
249 249
 
Browse code

PHP 8.0 compatibility

Bernd Wurst authored on09/12/2020 07:52:39
Showing1 changed files
... ...
@@ -45,7 +45,11 @@ function strong_password($password, $user = array())
45 45
     // Kein Online-Check eingerichtet oder der request war nicht erfolgreich
46 46
     DEBUG('using Zxcvbn for password check!');
47 47
     $passwordchecker = new ZxcvbnPhp\Zxcvbn();
48
-    $strength = $passwordchecker->passwordStrength($password, $user);
48
+    if ($user) {
49
+        $strength = $passwordchecker->passwordStrength($password, $user);
50
+    } else {
51
+        $strength = $passwordchecker->passwordStrength($password);
52
+    }
49 53
     DEBUG('password strength: '.$strength['score']);
50 54
     if ($strength['score'] < 2) {
51 55
         return "Das Passwort ist zu einfach!";
Browse code

Add function to check input types

Hanno Böck authored on02/05/2020 12:05:26
Showing1 changed files
... ...
@@ -306,3 +306,24 @@ function check_domain($input)
306 306
 {
307 307
     return (bool) preg_match("/^[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input);
308 308
 }
309
+
310
+function check_input_types($input, $types)
311
+{
312
+    foreach ($types as $key => $type) {
313
+        if (!array_key_exists($key, $input)) {
314
+            system_failure("Interner Fehler bei Eingabevariablen");
315
+        }
316
+        if ($type === 'int') {
317
+            if ($input[$key] !== (string)(int)$input[$key]) {
318
+                system_failure("Interner Fehler bei Eingabevariablen");
319
+            }
320
+            continue;
321
+        } elseif ($type === 'string') {
322
+            if (!is_string($input[$key])) {
323
+                system_failure("Interner Fehler bei Eingabevariablen");
324
+            }
325
+        } else {
326
+            system_failure("Interner Fehler: Ungültier Typ");
327
+        }
328
+    }
329
+}
Browse code

Fix codingstyle

Hanno authored on27/10/2019 08:54:14
Showing1 changed files
... ...
@@ -111,7 +111,6 @@ function verify_input_identifier($data)
111 111
     if ($filtered !== $data) {
112 112
         logger(LOG_WARNING, 'inc/security', 'verify_input_identifier', 'Ungültige Daten: '.$data);
113 113
         system_failure("Ihre Daten enthielten ungültige Zeichen!");
114
-
115 114
     }
116 115
     return $filtered;
117 116
 }
Browse code

accept integer parameters in filter_*() and use filter_output_html() in html_* functions

Bernd Wurst authored on14/10/2019 11:50:19
Showing1 changed files
... ...
@@ -59,6 +59,7 @@ function filter_input_general($input)
59 59
     if ($input === null) {
60 60
         return null;
61 61
     }
62
+    $input = (string) $input;
62 63
     $filtered = preg_replace('/[\x00-\x09\x0b-\x0c\x0e-\x1f]/', '', $input);
63 64
     if ($filtered !== $input) {
64 65
         system_failure("Ihre Daten enthielten ungültige Zeichen!");
... ...
@@ -72,10 +73,11 @@ function filter_input_oneline($input)
72 73
     if ($input === null) {
73 74
         return null;
74 75
     }
76
+    $input = (string) $input;
75 77
     $filtered = preg_replace('/[\x00-\x1f]/', '', $input);
76 78
     if ($filtered !== $input) {
77 79
         system_failure("Ihre Daten enthielten ungültige Zeichen!");
78
-        logger(LOG_WARNING, 'inc/security', 'filter_input_general', 'Ungültige Daten!');
80
+        logger(LOG_WARNING, 'inc/security', 'filter_input_oneline', 'Ungültige Daten!');
79 81
     }
80 82
     return $filtered;
81 83
 }
... ...
@@ -89,6 +91,7 @@ function filter_output_html($data)
89 91
 
90 92
 function verify_input_ascii($data)
91 93
 {
94
+    $data = (string) $data;
92 95
     $filtered = filter_var($data, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
93 96
     if ($filtered != $data) {
94 97
         logger(LOG_WARNING, 'inc/security', 'verify_input_ascii', 'Ungültige Daten: '.$data);
... ...
@@ -100,6 +103,7 @@ function verify_input_ascii($data)
100 103
 
101 104
 function verify_input_identifier($data)
102 105
 {
106
+    $data = (string) $data;
103 107
     if ($data === "") {
104 108
         system_failure("Leerer Bezeichner");
105 109
     }
Browse code

Umstellung von filter_input_general() auf filter_output_html()

Bernd Wurst authored on21/09/2019 17:07:48
Showing1 changed files
... ...
@@ -59,18 +59,25 @@ function filter_input_general($input)
59 59
     if ($input === null) {
60 60
         return null;
61 61
     }
62
-    return htmlspecialchars(iconv('UTF-8', 'UTF-8', $input), ENT_QUOTES, 'UTF-8');
62
+    $filtered = preg_replace('/[\x00-\x09\x0b-\x0c\x0e-\x1f]/', '', $input);
63
+    if ($filtered !== $input) {
64
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
65
+        logger(LOG_WARNING, 'inc/security', 'filter_input_general', 'Ungültige Daten!');
66
+    }
67
+    return $filtered;
63 68
 }
64 69
 
65
-
66
-function verify_input_general($input)
70
+function filter_input_oneline($input)
67 71
 {
68
-    if (filter_input_general($input) !== $input) {
72
+    if ($input === null) {
73
+        return null;
74
+    }
75
+    $filtered = preg_replace('/[\x00-\x1f]/', '', $input);
76
+    if ($filtered !== $input) {
69 77
         system_failure("Ihre Daten enthielten ungültige Zeichen!");
70
-        logger(LOG_WARNING, 'inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
71
-    } else {
72
-        return $input;
78
+        logger(LOG_WARNING, 'inc/security', 'filter_input_general', 'Ungültige Daten!');
73 79
     }
80
+    return $filtered;
74 81
 }
75 82
 
76 83
 
... ...
@@ -80,10 +87,35 @@ function filter_output_html($data)
80 87
 }
81 88
 
82 89
 
90
+function verify_input_ascii($data)
91
+{
92
+    $filtered = filter_var($data, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
93
+    if ($filtered != $data) {
94
+        logger(LOG_WARNING, 'inc/security', 'verify_input_ascii', 'Ungültige Daten: '.$data);
95
+        system_failure("Ihre Eingabe enthielt ungültige Zeichen");
96
+    }
97
+    return $filtered;
98
+}
99
+
100
+
101
+function verify_input_identifier($data)
102
+{
103
+    if ($data === "") {
104
+        system_failure("Leerer Bezeichner");
105
+    }
106
+    $filtered = preg_replace("/[^[:alnum:]\_\.\-]/", "", $data);
107
+    if ($filtered !== $data) {
108
+        logger(LOG_WARNING, 'inc/security', 'verify_input_identifier', 'Ungültige Daten: '.$data);
109
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
110
+
111
+    }
112
+    return $filtered;
113
+}
114
+
83 115
 
84 116
 function filter_input_username($input)
85 117
 {
86
-    $username=preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
118
+    $username = preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
87 119
     if ($username === "") {
88 120
         system_failure("Leerer Benutzername!");
89 121
     }
... ...
@@ -102,12 +134,9 @@ function verify_input_username($input)
102 134
 
103 135
 function filter_input_hostname($input, $wildcard=false)
104 136
 {
105
-    // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
106
-
107 137
     DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
108 138
     $input = strtolower($input);
109
-    $input = rtrim($input, "\t\n\r\x00 .");
110
-    $input = ltrim($input, "\t\n\r\x00 .");
139
+    $input = trim($input, "\t\n\r\x00 .");
111 140
     if (preg_replace("/[^.]_/", "", $input) != $input) {
112 141
         system_failure("Der Unterstrich ist nur als erstes Zeichen eines Hostnames erlaubt.");
113 142
     }
... ...
@@ -142,7 +171,7 @@ function verify_input_hostname_utf8($input)
142 171
         system_failure("Ungültiger Hostname! idn ".$input);
143 172
     }
144 173
     $filter = filter_var($puny, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME);
145
-    if ($filter === false) {
174
+    if ($filter !== $puny) {
146 175
         system_failure("Ungültiger Hostname! filter ".$input);
147 176
     }
148 177
 }
Browse code

New function filter_output_html(), wrapper for htmlspecialchars(..., ENT_QUOTES)

Bernd Wurst authored on20/08/2019 19:00:51
Showing1 changed files
... ...
@@ -74,6 +74,13 @@ function verify_input_general($input)
74 74
 }
75 75
 
76 76
 
77
+function filter_output_html($data)
78
+{
79
+    return htmlspecialchars($data, ENT_QUOTES);
80
+}
81
+
82
+
83
+
77 84
 function filter_input_username($input)
78 85
 {
79 86
     $username=preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
... ...
@@ -215,7 +222,7 @@ function filter_ssh_key($key)
215 222
 function check_path($input)
216 223
 {
217 224
     DEBUG("checking {$input} for valid path name");
218
-    if ($input != filter_input_general($input)) {
225
+    if ($input != filter_output_html($input)) {
219 226
         logger(LOG_WARNING, 'inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
220 227
         DEBUG("HTML-Krams im Pfad");
221 228
         return false;
Browse code

better error message for weak passwords

Bernd Wurst authored on10/04/2019 12:38:07
Showing1 changed files
... ...
@@ -40,7 +40,7 @@ function strong_password($password, $user = array())
40 40
     if ($result === 'good') {
41 41
         return true;
42 42
     } elseif ($result === 'bad') {
43
-        return "Das ist kein gutes Passwort!";
43
+        return "Unsere Überprüfung hat ergeben, dass dieses Passwort in bisher veröffentlichten Passwortlisten enthalten ist. Es wird daher nicht akzeptiert.";
44 44
     }
45 45
     // Kein Online-Check eingerichtet oder der request war nicht erfolgreich
46 46
     DEBUG('using Zxcvbn for password check!');
... ...
@@ -50,7 +50,6 @@ function strong_password($password, $user = array())
50 50
     if ($strength['score'] < 2) {
51 51
         return "Das Passwort ist zu einfach!";
52 52
     }
53
-
54 53
     return true;
55 54
 }
56 55
 
Browse code

use POST for password checker

Bernd Wurst authored on28/03/2019 14:29:28
Showing1 changed files
... ...
@@ -24,13 +24,16 @@ function strong_password($password, $user = array())
24 24
     $result = null;
25 25
     if ($pwcheck) {
26 26
         DEBUG($pwcheck);
27
-        $req = curl_init($pwcheck.$password);
27
+        $req = curl_init($pwcheck);
28 28
         curl_setopt($req, CURLOPT_RETURNTRANSFER, 1);
29 29
         curl_setopt($req, CURLOPT_SSL_VERIFYPEER, 1);
30 30
         curl_setopt($req, CURLOPT_SSL_VERIFYSTATUS, 1);
31 31
         curl_setopt($req, CURLOPT_CONNECTTIMEOUT, 5);
32 32
         curl_setopt($req, CURLOPT_TIMEOUT, 5);
33 33
         curl_setopt($req, CURLOPT_FOLLOWLOCATION, 0);
34
+        curl_setopt($req, CURLOPT_POST, 1);
35
+        curl_setopt($req, CURLOPT_SAFE_UPLOAD, 1);
36
+        curl_setopt($req, CURLOPT_POSTFIELDS, array("password" => $password));
34 37
         $result = chop(curl_exec($req));
35 38
         DEBUG($result);
36 39
     }
Browse code

use Zxcvbn as fallback in every error case

Bernd Wurst authored on18/03/2019 08:58:36
Showing1 changed files
... ...
@@ -39,14 +39,13 @@ function strong_password($password, $user = array())
39 39
     } elseif ($result === 'bad') {
40 40
         return "Das ist kein gutes Passwort!";
41 41
     }
42
-    if ($result === null || $result === false) {
43
-        // Kein Online-Check eingerichtet oder der request war nicht erfolgreich
44
-        $passwordchecker = new ZxcvbnPhp\Zxcvbn();
45
-        $strength = $passwordchecker->passwordStrength($password, $user);
46
-        
47
-        if ($strength['score'] < 2) {
48
-            return "Das Passwort ist zu einfach!";
49
-        }
42
+    // Kein Online-Check eingerichtet oder der request war nicht erfolgreich
43
+    DEBUG('using Zxcvbn for password check!');
44
+    $passwordchecker = new ZxcvbnPhp\Zxcvbn();
45
+    $strength = $passwordchecker->passwordStrength($password, $user);
46
+    DEBUG('password strength: '.$strength['score']);
47
+    if ($strength['score'] < 2) {
48
+        return "Das Passwort ist zu einfach!";
50 49
     }
51 50
 
52 51
     return true;
Browse code

support online check for password strength (url in config var "pwcheck")

Bernd Wurst authored on18/03/2019 08:54:28
Showing1 changed files
... ...
@@ -20,11 +20,33 @@ require_once('vendor/autoload.php');
20 20
 
21 21
 function strong_password($password, $user = array())
22 22
 {
23
-    $passwordchecker = new ZxcvbnPhp\Zxcvbn();
24
-    $strength = $passwordchecker->passwordStrength($password, $user);
25
-
26
-    if ($strength['score'] < 2) {
27
-        return "Das Passwort ist zu einfach!";
23
+    $pwcheck = config('pwcheck');
24
+    $result = null;
25
+    if ($pwcheck) {
26
+        DEBUG($pwcheck);
27
+        $req = curl_init($pwcheck.$password);
28
+        curl_setopt($req, CURLOPT_RETURNTRANSFER, 1);
29
+        curl_setopt($req, CURLOPT_SSL_VERIFYPEER, 1);
30
+        curl_setopt($req, CURLOPT_SSL_VERIFYSTATUS, 1);
31
+        curl_setopt($req, CURLOPT_CONNECTTIMEOUT, 5);
32
+        curl_setopt($req, CURLOPT_TIMEOUT, 5);
33
+        curl_setopt($req, CURLOPT_FOLLOWLOCATION, 0);
34
+        $result = chop(curl_exec($req));
35
+        DEBUG($result);
36
+    }
37
+    if ($result === 'good') {
38
+        return true;
39
+    } elseif ($result === 'bad') {
40
+        return "Das ist kein gutes Passwort!";
41
+    }
42
+    if ($result === null || $result === false) {
43
+        // Kein Online-Check eingerichtet oder der request war nicht erfolgreich
44
+        $passwordchecker = new ZxcvbnPhp\Zxcvbn();
45
+        $strength = $passwordchecker->passwordStrength($password, $user);
46
+        
47
+        if ($strength['score'] < 2) {
48
+            return "Das Passwort ist zu einfach!";
49
+        }
28 50
     }
29 51
 
30 52
     return true;
Browse code

prevent breaking kvhostcreator with long path names

Hanno authored on17/08/2018 05:29:56
Showing1 changed files
... ...
@@ -204,6 +204,12 @@ function check_path($input)
204 204
             DEBUG("»..« im Pfad");
205 205
             return false;
206 206
         }
207
+        if (strlen($item) > 255) {
208
+            return false;
209
+        }
210
+    }
211
+    if (strlen($input) > 2048) {
212
+        return false;
207 213
     }
208 214
     return (preg_match('/^[ A-Za-z0-9.@\/_-]*$/', $input) == 1);
209 215
 }
Browse code

vhost-hostnamen vernünftig prüfen: IDN-encoding, PHP-eigene funktion, check von komplettem fqdn

Hanno Böck authored on07/08/2018 20:24:06
Showing1 changed files
... ...
@@ -105,6 +105,19 @@ function verify_input_hostname($input, $wildcard=false)
105 105
 }
106 106
 
107 107
 
108
+function verify_input_hostname_utf8($input)
109
+{
110
+    $puny = idn_to_ascii($input, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46);
111
+    if ($puny === false) {
112
+        system_failure("Ungültiger Hostname! idn ".$input);
113
+    }
114
+    $filter = filter_var($puny, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME);
115
+    if ($filter === false) {
116
+        system_failure("Ungültiger Hostname! filter ".$input);
117
+    }
118
+}
119
+
120
+
108 121
 function verify_input_ipv4($input)
109 122
 {
110 123
     if (! preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $input)) {
Browse code

Spezialbehandlung für äöü nicht nötig

Hanno authored on05/08/2018 03:58:51
Showing1 changed files
... ...
@@ -75,13 +75,13 @@ function filter_input_hostname($input, $wildcard=false)
75 75
     // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
76 76
 
77 77
     DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
78
-    $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
78
+    $input = strtolower($input);
79 79
     $input = rtrim($input, "\t\n\r\x00 .");
80 80
     $input = ltrim($input, "\t\n\r\x00 .");
81 81
     if (preg_replace("/[^.]_/", "", $input) != $input) {
82 82
         system_failure("Der Unterstrich ist nur als erstes Zeichen eines Hostnames erlaubt.");
83 83
     }
84
-    if (preg_replace("/[^[:alnum:]äöü_*\.\-]/", "", $input) != $input) {
84
+    if (preg_replace("/[^[:alnum:]_*\.\-]/u", "", $input) != $input) {
85 85
         system_failure("Ihre Daten enthielten ungültige Zeichen!");
86 86
     }
87 87
     if (preg_match("/^.+\*/", $input)) {
Browse code

Syntaxfehler

Bernd Wurst authored on27/06/2018 14:04:41
Showing1 changed files
... ...
@@ -207,7 +207,7 @@ function in_homedir($path)
207 207
         DEBUG("Kann homedir nicht ermitteln");
208 208
         return false;
209 209
     }
210
-    return strncmp($_SESSION['userinfo']['homedir'], $path, count($_SESSION['userinfo']['homedir'])) == 0;
210
+    return strncmp($_SESSION['userinfo']['homedir'], $path, strlen($_SESSION['userinfo']['homedir'])) == 0;
211 211
 }
212 212
 
213 213
 function check_date($input)
Browse code

remove whitespace in empty lines

Hanno authored on26/06/2018 23:36:40
Showing1 changed files
... ...
@@ -73,7 +73,7 @@ function verify_input_username($input)
73 73
 function filter_input_hostname($input, $wildcard=false)
74 74
 {
75 75
     // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
76
-  
76
+
77 77
     DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
78 78
     $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
79 79
     $input = rtrim($input, "\t\n\r\x00 .");
Browse code

Fix coding style with php-cs-checker, see https://cs.sensiolabs.org/

Hanno authored on26/06/2018 13:58:19
Showing1 changed files
... ...
@@ -8,7 +8,7 @@ Written 2008-2018 by schokokeks.org Hosting, namely
8 8
 
9 9
 To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
10 10
 
11
-You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see 
11
+You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see
12 12
 http://creativecommons.org/publicdomain/zero/1.0/
13 13
 
14 14
 Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
... ...
@@ -20,205 +20,208 @@ require_once('vendor/autoload.php');
20 20
 
21 21
 function strong_password($password, $user = array())
22 22
 {
23
-  $passwordchecker = new ZxcvbnPhp\Zxcvbn();
24
-  $strength = $passwordchecker->passwordStrength($password, $user);
23
+    $passwordchecker = new ZxcvbnPhp\Zxcvbn();
24
+    $strength = $passwordchecker->passwordStrength($password, $user);
25 25
 
26
-  if ($strength['score'] < 2) {
27
-    return "Das Passwort ist zu einfach!";
28
-  }
26
+    if ($strength['score'] < 2) {
27
+        return "Das Passwort ist zu einfach!";
28
+    }
29 29
 
30
-  return true;
30
+    return true;
31 31
 }
32 32
 
33 33
 
34
-function filter_input_general( $input )
34
+function filter_input_general($input)
35 35
 {
36
-  if ($input === NULL) {
37
-    return NULL;
38
-  }
39
-  return htmlspecialchars(iconv('UTF-8', 'UTF-8', $input), ENT_QUOTES, 'UTF-8');
36
+    if ($input === null) {
37
+        return null;
38
+    }
39
+    return htmlspecialchars(iconv('UTF-8', 'UTF-8', $input), ENT_QUOTES, 'UTF-8');
40 40
 }
41 41
 
42 42
 
43
-function verify_input_general( $input )
43
+function verify_input_general($input)
44 44
 {
45
-  if (filter_input_general($input) !== $input) {
46
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
47
-    logger(LOG_WARNING, 'inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
48
-  } else {
49
-      return $input;
50
-  }
45
+    if (filter_input_general($input) !== $input) {
46
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
47
+        logger(LOG_WARNING, 'inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
48
+    } else {
49
+        return $input;
50
+    }
51 51
 }
52 52
 
53 53
 
54
-function filter_input_username( $input )
54
+function filter_input_username($input)
55 55
 {
56
-  $username=preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
57
-  if ($username === "") {
58
-    system_failure("Leerer Benutzername!");
59
-  }
60
-  return $username;
56
+    $username=preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
57
+    if ($username === "") {
58
+        system_failure("Leerer Benutzername!");
59
+    }
60
+    return $username;
61 61
 }
62 62
 
63
-function verify_input_username( $input )
63
+function verify_input_username($input)
64 64
 {
65
-  if (filter_input_username( $input ) != $input) {
66
-    logger(LOG_WARNING, 'inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
67
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
68
-  }
65
+    if (filter_input_username($input) != $input) {
66
+        logger(LOG_WARNING, 'inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
67
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
68
+    }
69 69
 }
70 70
 
71 71
 
72 72
 
73
-function filter_input_hostname( $input, $wildcard=false )
73
+function filter_input_hostname($input, $wildcard=false)
74 74
 {
75
-  // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
75
+    // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
76 76
   
77
-  DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
78
-  $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
79
-  $input = rtrim($input, "\t\n\r\x00 .");
80
-  $input = ltrim($input, "\t\n\r\x00 .");
81
-  if (preg_replace("/[^.]_/", "", $input) != $input) {
82
-    system_failure("Der Unterstrich ist nur als erstes Zeichen eines Hostnames erlaubt.");
83
-  }
84
-  if (preg_replace("/[^[:alnum:]äöü_*\.\-]/", "", $input ) != $input)
85
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
86
-  if (preg_match("/^.+\*/", $input ))
87
-    system_failure("Ihre Daten enthielten ungültige Zeichen (Wildcard-Stern muss ganz vorne stehen)!");
88
-  if (! $wildcard && preg_replace("/^\*/", "", $input ) != $input)
89
-    system_failure("Ihre Daten enthielten ungültige Zeichen (Keine Wildcards erlaubt)!");
90
-  if (strstr($input, '..'))
91
-    system_failure("Ungültiger Hostname");
92
-  return $input;
77
+    DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
78
+    $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
79
+    $input = rtrim($input, "\t\n\r\x00 .");
80
+    $input = ltrim($input, "\t\n\r\x00 .");
81
+    if (preg_replace("/[^.]_/", "", $input) != $input) {
82
+        system_failure("Der Unterstrich ist nur als erstes Zeichen eines Hostnames erlaubt.");
83
+    }
84
+    if (preg_replace("/[^[:alnum:]äöü_*\.\-]/", "", $input) != $input) {
85
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
86
+    }
87
+    if (preg_match("/^.+\*/", $input)) {
88
+        system_failure("Ihre Daten enthielten ungültige Zeichen (Wildcard-Stern muss ganz vorne stehen)!");
89
+    }
90
+    if (! $wildcard && preg_replace("/^\*/", "", $input) != $input) {
91
+        system_failure("Ihre Daten enthielten ungültige Zeichen (Keine Wildcards erlaubt)!");
92
+    }
93
+    if (strstr($input, '..')) {
94
+        system_failure("Ungültiger Hostname");
95
+    }
96
+    return $input;
93 97
 }
94 98
 
95
-function verify_input_hostname( $input, $wildcard=false )
99
+function verify_input_hostname($input, $wildcard=false)
96 100
 {
97
-  if (filter_input_hostname( $input, $wildcard ) != $input) {
98
-    logger(LOG_WARNING, 'inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
99
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
100
-  }
101
+    if (filter_input_hostname($input, $wildcard) != $input) {
102
+        logger(LOG_WARNING, 'inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
103
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
104
+    }
101 105
 }
102 106
 
103 107
 
104
-function verify_input_ipv4( $input )
108
+function verify_input_ipv4($input)
105 109
 {
106
-  if (! preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $input))
107
-    system_failure('Keine IP-Adresse');
110
+    if (! preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $input)) {
111
+        system_failure('Keine IP-Adresse');
112
+    }
108 113
 }
109 114
 
110 115
 
111
-function verify_input_ipv6( $input )
116
+function verify_input_ipv6($input)
112 117
 {
113
-  // ripped from Perl module Net-IPv6Addr v0.2
114
-  if (! preg_match("/^(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|[0-9a-f]{0,4}::|:(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){1,6}:|(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}|(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}|(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}|(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}|(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4}))$/i", $input))
115
-    system_failure("Ungültige IPv6-Adresse");
118
+    // ripped from Perl module Net-IPv6Addr v0.2
119
+    if (! preg_match("/^(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|[0-9a-f]{0,4}::|:(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){1,6}:|(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}|(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}|(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}|(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}|(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4}))$/i", $input)) {
120
+        system_failure("Ungültige IPv6-Adresse");
121
+    }
116 122
 }
117 123
 
118
-function verify_input_recorddata( $input )
124
+function verify_input_recorddata($input)
119 125
 {
120
-  if (strstr($input, "\\") || strstr($input, '"'))
121
-    system_failure("Ungültige Zeichen");
126
+    if (strstr($input, "\\") || strstr($input, '"')) {
127
+        system_failure("Ungültige Zeichen");
128
+    }
122 129
 }
123 130
 
124
-function filter_quotes( $input )
131
+function filter_quotes($input)
125 132
 {
126
-  return preg_replace('/["\'`]/', '', $input );
133
+    return preg_replace('/["\'`]/', '', $input);
127 134
 }
128 135
 
129 136
 
130 137
 
131
-function filter_shell( $input )
138
+function filter_shell($input)
132 139
 {
133
-  return preg_replace('/[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]/', '', $input );
140
+    return preg_replace('/[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]/', '', $input);
134 141
 }
135 142
 
136
-function verify_shell( $input )
143
+function verify_shell($input)
137 144
 {
138
-  if (filter_shell($input) != $input)
139
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
145
+    if (filter_shell($input) != $input) {
146
+        system_failure("Ihre Daten enthielten ungültige Zeichen!");
147
+    }
140 148
 }
141 149
 
142 150
 
143 151
 function filter_ssh_key($key)
144 152
 {
145
-  $keyparts = explode(" ", trim($key));
153
+    $keyparts = explode(" ", trim($key));
146 154
 
147
-  if ((count($keyparts) > 3) || (count($keyparts) < 2)) {
148
-    system_failure("Ungültiger SSH-Key!");
149
-  }
155
+    if ((count($keyparts) > 3) || (count($keyparts) < 2)) {
156
+        system_failure("Ungültiger SSH-Key!");
157
+    }
150 158
 
151
-  if (preg_match("/^[a-z0-9]+-[a-z0-9-]+$/", $keyparts[0]) === 0) {
152
-    system_failure("Ungültiger SSH-Key!");
153
-  }
159
+    if (preg_match("/^[a-z0-9]+-[a-z0-9-]+$/", $keyparts[0]) === 0) {
160
+        system_failure("Ungültiger SSH-Key!");
161
+    }
154 162
 
155
-  if (base64_decode($keyparts[1], 1) == false) {
156
-    system_failure("Ungültiger SSH-Key!");
157
-  }
163
+    if (base64_decode($keyparts[1], 1) == false) {
164
+        system_failure("Ungültiger SSH-Key!");
165
+    }
158 166
 
159
-  if ((count($keyparts) === 3) && (preg_match("/^[a-zA-Z0-9@.-_]+$/", $keyparts[2]) === 0)) {
160
-    system_failure("Ungültige Zeichen im Kommentar des SSH-Keys!");
161
-  }
167
+    if ((count($keyparts) === 3) && (preg_match("/^[a-zA-Z0-9@.-_]+$/", $keyparts[2]) === 0)) {
168
+        system_failure("Ungültige Zeichen im Kommentar des SSH-Keys!");
169
+    }
162 170
 
163
-  if (count($keyparts) === 2) {
164
-    return $keyparts[0]." ".$keyparts[1];
165
-  } else {
166
-    return $keyparts[0]." ".$keyparts[1]." ".$keyparts[2];
167
-  }
171
+    if (count($keyparts) === 2) {
172
+        return $keyparts[0]." ".$keyparts[1];
173
+    } else {
174
+        return $keyparts[0]." ".$keyparts[1]." ".$keyparts[2];
175
+    }
168 176
 }
169 177
 
170 178
 
171
-function check_path( $input )
179
+function check_path($input)
172 180
 {
173
-  DEBUG("checking {$input} for valid path name");
174
-  if ($input != filter_input_general($input))
175
-  {
176
-    logger(LOG_WARNING, 'inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
177
-    DEBUG("HTML-Krams im Pfad");
178
-    return False;
179
-  }
180
-  $components = explode("/", $input);
181
-  foreach ($components AS $item)
182
-  {
183
-    if ($item == '..')
184
-    {
185
-      logger(LOG_WARNING, 'inc/security', 'check_path', '»..« im Pfad: '.$input);
186
-      DEBUG("»..« im Pfad");
187
-      return False;
181
+    DEBUG("checking {$input} for valid path name");
182
+    if ($input != filter_input_general($input)) {
183
+        logger(LOG_WARNING, 'inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
184
+        DEBUG("HTML-Krams im Pfad");
185
+        return false;
186
+    }
187
+    $components = explode("/", $input);
188
+    foreach ($components as $item) {
189
+        if ($item == '..') {
190
+            logger(LOG_WARNING, 'inc/security', 'check_path', '»..« im Pfad: '.$input);
191
+            DEBUG("»..« im Pfad");
192
+            return false;
193
+        }
188 194
     }
189
-  }
190
-  return (preg_match('/^[ A-Za-z0-9.@\/_-]*$/',$input) == 1);
195
+    return (preg_match('/^[ A-Za-z0-9.@\/_-]*$/', $input) == 1);
191 196
 }
192 197
 
193 198
 
194 199
 function in_homedir($path)
195 200
 {
196
-  DEBUG("Prüfe »{$path}«");
197
-  if (! check_path($path))
198
-  {
199
-    DEBUG('Kein Pfad');
200
-    return False;
201
-  }
202
-  if (! isset($_SESSION['userinfo']['homedir']))
203
-  {
204
-    DEBUG("Kann homedir nicht ermitteln");
205
-    return False;
206
-  }
207
-  return strncmp($_SESSION['userinfo']['homedir'], $path, count($_SESSION['userinfo']['homedir'])) == 0;
201
+    DEBUG("Prüfe »{$path}«");
202
+    if (! check_path($path)) {
203
+        DEBUG('Kein Pfad');
204
+        return false;
205
+    }
206
+    if (! isset($_SESSION['userinfo']['homedir'])) {
207
+        DEBUG("Kann homedir nicht ermitteln");
208
+        return false;
209
+    }
210
+    return strncmp($_SESSION['userinfo']['homedir'], $path, count($_SESSION['userinfo']['homedir'])) == 0;
208 211
 }
209 212
 
210
-function check_date( $input )
213
+function check_date($input)
211 214
 {
212
-  return (bool) preg_match("/[0-9]{4}-(0?[1-9]|10|11|12)-([012]?[0-9]|30|31)/", $input);
215
+    return (bool) preg_match("/[0-9]{4}-(0?[1-9]|10|11|12)-([012]?[0-9]|30|31)/", $input);
213 216
 }
214 217
 
215 218
 
216
-function check_emailaddr( $input )
219
+function check_emailaddr($input)
217 220
 {
218
-  return (bool) filter_var($input, FILTER_VALIDATE_EMAIL) == $input;
221
+    return (bool) filter_var($input, FILTER_VALIDATE_EMAIL) == $input;
219 222
 }
220 223
 
221
-function check_domain( $input )
224
+function check_domain($input)
222 225
 {
223
-  return (bool) preg_match("/^[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input );
226
+    return (bool) preg_match("/^[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input);
224 227
 }
Browse code

hardening the domain input

Bernd Wurst authored on06/02/2018 17:38:01
Showing1 changed files
... ...
@@ -220,5 +220,5 @@ function check_emailaddr( $input )
220 220
 
221 221
 function check_domain( $input )
222 222
 {
223
-  return (bool) preg_match("/[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input );
223
+  return (bool) preg_match("/^[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input );
224 224
 }
Browse code

Ermögliche lange nTLDs

Bernd Wurst authored on28/01/2018 06:36:40
Showing1 changed files
... ...
@@ -220,5 +220,5 @@ function check_emailaddr( $input )
220 220
 
221 221
 function check_domain( $input )
222 222
 {
223
-  return (bool) preg_match("/[a-z0-9\.\-]+\.[a-z]{2,4}$/i", $input );
223
+  return (bool) preg_match("/[a-z0-9\.\-]+\.[a-z\-]{2,63}$/i", $input );
224 224
 }
Browse code

Security

Bernd Wurst authored on20/01/2018 12:09:53
Showing1 changed files
... ...
@@ -42,9 +42,11 @@ function filter_input_general( $input )
42 42
 
43 43
 function verify_input_general( $input )
44 44
 {
45
-  if (filter_input_general($input) != $input) {
45
+  if (filter_input_general($input) !== $input) {
46 46
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
47 47
     logger(LOG_WARNING, 'inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
48
+  } else {
49
+      return $input;
48 50
   }
49 51
 }
50 52
 
Browse code

Copyright year update

Bernd Wurst authored on13/01/2018 06:07:05
Showing1 changed files
... ...
@@ -2,7 +2,7 @@
2 2
 /*
3 3
 This file belongs to the Webinterface of schokokeks.org Hosting
4 4
 
5
-Written 2008-2014 by schokokeks.org Hosting, namely
5
+Written 2008-2018 by schokokeks.org Hosting, namely
6 6
   Bernd Wurst <bernd@schokokeks.org>
7 7
   Hanno Böck <hanno@schokokeks.org>
8 8
 
Browse code

bessere fehlermeldung bei ssh-key-fehlern

Hanno Böck authored on08/03/2017 23:38:19
Showing1 changed files
... ...
@@ -154,8 +154,8 @@ function filter_ssh_key($key)
154 154
     system_failure("Ungültiger SSH-Key!");
155 155
   }
156 156
 
157
-  if ((count($keyparts) === 3) && (preg_match("/^[a-z0-9@]+$/", $keyparts[2]) === 0)) {
158
-    system_failure("Ungültiger SSH-Key!");
157
+  if ((count($keyparts) === 3) && (preg_match("/^[a-zA-Z0-9@.-_]+$/", $keyparts[2]) === 0)) {
158
+    system_failure("Ungültige Zeichen im Kommentar des SSH-Keys!");
159 159
   }
160 160
 
161 161
   if (count($keyparts) === 2) {
Browse code

Fehler bei leeren Benutzernamen

Hanno Böck authored on03/03/2017 12:57:02
Showing1 changed files
... ...
@@ -51,7 +51,11 @@ function verify_input_general( $input )
51 51
 
52 52
 function filter_input_username( $input )
53 53
 {
54
-  return preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input );
54
+  $username=preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input);
55
+  if ($username === "") {
56
+    system_failure("Leerer Benutzername!");
57
+  }
58
+  return $username;
55 59
 }
56 60
 
57 61
 function verify_input_username( $input )
Browse code

validiere SSH-Keys korrekt

Hanno Böck authored on03/03/2017 12:22:44
Showing1 changed files
... ...
@@ -134,6 +134,33 @@ function verify_shell( $input )
134 134
 }
135 135
 
136 136
 
137
+function filter_ssh_key($key)
138
+{
139
+  $keyparts = explode(" ", trim($key));
140
+
141
+  if ((count($keyparts) > 3) || (count($keyparts) < 2)) {
142
+    system_failure("Ungültiger SSH-Key!");
143
+  }
144
+
145
+  if (preg_match("/^[a-z0-9]+-[a-z0-9-]+$/", $keyparts[0]) === 0) {
146
+    system_failure("Ungültiger SSH-Key!");
147
+  }
148
+
149
+  if (base64_decode($keyparts[1], 1) == false) {
150
+    system_failure("Ungültiger SSH-Key!");
151
+  }
152
+
153
+  if ((count($keyparts) === 3) && (preg_match("/^[a-z0-9@]+$/", $keyparts[2]) === 0)) {
154
+    system_failure("Ungültiger SSH-Key!");
155
+  }
156
+
157
+  if (count($keyparts) === 2) {
158
+    return $keyparts[0]." ".$keyparts[1];
159
+  } else {
160
+    return $keyparts[0]." ".$keyparts[1]." ".$keyparts[2];
161
+  }
162
+}
163
+
137 164
 
138 165
 function check_path( $input )
139 166
 {
Browse code

Prüfe DNS-Records auf problematische Zeichen für die Zone-Files

Hanno Böck authored on02/03/2017 12:31:40
Showing1 changed files
... ...
@@ -109,6 +109,11 @@ function verify_input_ipv6( $input )
109 109
     system_failure("Ungültige IPv6-Adresse");
110 110
 }
111 111
 
112
+function verify_input_recorddata( $input )
113
+{
114
+  if (strstr($input, "\\") || strstr($input, '"'))
115
+    system_failure("Ungültige Zeichen");
116
+}
112 117
 
113 118
 function filter_quotes( $input )
114 119
 {
Browse code

Hostnames dürfen keine Unterstriche enthalten (außer als jeweils erstes Zeichen)

Bernd Wurst authored on10/02/2017 17:09:35
Showing1 changed files
... ...
@@ -72,6 +72,9 @@ function filter_input_hostname( $input, $wildcard=false )
72 72
   $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
73 73
   $input = rtrim($input, "\t\n\r\x00 .");
74 74
   $input = ltrim($input, "\t\n\r\x00 .");
75
+  if (preg_replace("/[^.]_/", "", $input) != $input) {
76
+    system_failure("Der Unterstrich ist nur als erstes Zeichen eines Hostnames erlaubt.");
77
+  }
75 78
   if (preg_replace("/[^[:alnum:]äöü_*\.\-]/", "", $input ) != $input)
76 79
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
77 80
   if (preg_match("/^.+\*/", $input ))
Browse code

replace cracklib with zxcvbn

Hanno Böck authored on21/10/2016 19:21:05
Showing1 changed files
... ...
@@ -15,49 +15,19 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
15 15
 */
16 16
 
17 17
 require_once('inc/error.php');
18
+require_once('vendor/autoload.php');
18 19
 
19 20
 
20
-function strong_password($password)
21
+function strong_password($password, $user = array())
21 22
 {
22
-  if ($password == '' || strlen($password) < 4) {
23
-    DEBUG("Passwort zu kurz!");
24
-    return "Passwort ist zu kurz!";
25
-  }
23
+  $passwordchecker = new ZxcvbnPhp\Zxcvbn();
24
+  $strength = $passwordchecker->passwordStrength($password, $user);
26 25
 
27
-  if (! function_exists("crack_opendict"))
28
-  {
29
-    DEBUG("cracklib not available!");
30
-    return true;
31
-  }
32
-  if (config('use_cracklib') === NULL or config('use_cracklib') === false) {
33
-    DEBUG('Cracklib deaktiviert');
34
-    return true;
35
-  }
36
-  DEBUG("Öffne Wörterbuch: ".config('cracklib_dict'));
37
-  if (! ($dict = crack_opendict(config('cracklib_dict'))))
38
-  {
39
-    logger(LOG_ERR, "inc/security", "cracklib", "could not open cracklib-dictionary »".config('cracklib_dict')."«");
40
-    #system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: ".config('cracklib_dict'));
41
-    DEBUG('cracklib tut nicht, dann wird das PW akzeptiert');
42
-    warning('Das Passwort konnte aufgrund eines internen Fehlers nicht auf die Passwortstärke geprüft werden.');
43
-    return true;
26
+  if ($strength['score'] < 2) {
27
+    return "Das Passwort ist zu einfach!";
44 28
   }
45
-  // Führe eine Überprüfung des Passworts durch
46
-  $check = crack_check($dict, $password);
47 29
 
48
-  $message = crack_getlastmessage();
49
-  crack_closedict($dict);
50
-
51
-  if ($check === True)
52
-  {
53
-    DEBUG("Passwort ok");
54
-    return true;
55
-  }
56
-  else
57
-  {
58
-    DEBUG("Passwort nicht ok: {$message}");
59
-    return $message;
60
-  }
30
+  return true;
61 31
 }
62 32
 
63 33
 
Browse code

Erlaube beim SEPA-Mandat auch den Oktober als Monat. :)

Bernd Wurst authored on28/10/2014 05:48:42
Showing1 changed files
... ...
@@ -198,7 +198,7 @@ function in_homedir($path)
198 198
 
199 199
 function check_date( $input )
200 200
 {
201
-  return (bool) preg_match("/[0-9]{4}-(0?[1-9]|11|12)-([012]?[0-9]|30|31)/", $input);
201
+  return (bool) preg_match("/[0-9]{4}-(0?[1-9]|10|11|12)-([012]?[0-9]|30|31)/", $input);
202 202
 }
203 203
 
204 204
 
Browse code

Erlaube underscore in hostnames

Bernd Wurst authored on28/04/2014 10:06:28
Showing1 changed files
... ...
@@ -102,7 +102,7 @@ function filter_input_hostname( $input, $wildcard=false )
102 102
   $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
103 103
   $input = rtrim($input, "\t\n\r\x00 .");
104 104
   $input = ltrim($input, "\t\n\r\x00 .");
105
-  if (preg_replace("/[^[:alnum:]äöü*\.\-]/", "", $input ) != $input)
105
+  if (preg_replace("/[^[:alnum:]äöü_*\.\-]/", "", $input ) != $input)
106 106
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
107 107
   if (preg_match("/^.+\*/", $input ))
108 108
     system_failure("Ihre Daten enthielten ungültige Zeichen (Wildcard-Stern muss ganz vorne stehen)!");
Browse code

Lizenzinfos in eigenes Modul ausgelagert und Copyright auf 2014 angepasst

Bernd Wurst authored on08/02/2014 05:45:07
Showing1 changed files
... ...
@@ -2,7 +2,7 @@
2 2
 /*
3 3
 This file belongs to the Webinterface of schokokeks.org Hosting
4 4
 
5
-Written 2008-2013 by schokokeks.org Hosting, namely
5
+Written 2008-2014 by schokokeks.org Hosting, namely
6 6
   Bernd Wurst <bernd@schokokeks.org>
7 7
   Hanno Böck <hanno@schokokeks.org>
8 8
 
Browse code

Weitere Prepared-Statements

Bernd Wurst authored on04/02/2014 14:37:35
Showing1 changed files
... ...
@@ -63,6 +63,9 @@ function strong_password($password)
63 63
 
64 64
 function filter_input_general( $input )
65 65
 {
66
+  if ($input === NULL) {
67
+    return NULL;
68
+  }
66 69
   return htmlspecialchars(iconv('UTF-8', 'UTF-8', $input), ENT_QUOTES, 'UTF-8');
67 70
 }
68 71
 
Browse code

Erste Version des SEPA-Mandat-Webinterface

Bernd Wurst authored on20/12/2013 19:13:16
Showing1 changed files
... ...
@@ -193,6 +193,11 @@ function in_homedir($path)
193 193
   return strncmp($_SESSION['userinfo']['homedir'], $path, count($_SESSION['userinfo']['homedir'])) == 0;
194 194
 }
195 195
 
196
+function check_date( $input )
197
+{
198
+  return (bool) preg_match("/[0-9]{4}-(0?[1-9]|11|12)-([012]?[0-9]|30|31)/", $input);
199
+}
200
+
196 201
 
197 202
 function check_emailaddr( $input )
198 203
 {
Browse code

Wildcard-CSRs können jetzt erstellt werden (auf einfache Weise)

Bernd Wurst authored on10/03/2013 18:57:34
Showing1 changed files
... ...
@@ -95,6 +95,7 @@ function filter_input_hostname( $input, $wildcard=false )
95 95
 {
96 96
   // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
97 97
   
98
+  DEBUG('filter_input_hostname("'.$input.'", $wildcard='.$wildcard.')');
98 99
   $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
99 100
   $input = rtrim($input, "\t\n\r\x00 .");
100 101
   $input = ltrim($input, "\t\n\r\x00 .");
Browse code

Updated copyright notice (2012 => 2013)

Bernd Wurst authored on19/01/2013 10:49:50
Showing1 changed files
... ...
@@ -2,7 +2,7 @@
2 2
 /*
3 3
 This file belongs to the Webinterface of schokokeks.org Hosting
4 4
 
5
-Written 2008-2012 by schokokeks.org Hosting, namely
5
+Written 2008-2013 by schokokeks.org Hosting, namely
6 6
   Bernd Wurst <bernd@schokokeks.org>
7 7
   Hanno Böck <hanno@schokokeks.org>
8 8
 
Browse code

Wenn cracklib nicht funtkioniert, ist das nur einen Hinweis wert, die User sollen dennoch ihr Passwort ändern können

Bernd Wurst authored on10/09/2012 07:27:03
Showing1 changed files
... ...
@@ -37,7 +37,10 @@ function strong_password($password)
37 37
   if (! ($dict = crack_opendict(config('cracklib_dict'))))
38 38
   {
39 39
     logger(LOG_ERR, "inc/security", "cracklib", "could not open cracklib-dictionary »".config('cracklib_dict')."«");
40
-    system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: ".config('cracklib_dict'));
40
+    #system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: ".config('cracklib_dict'));
41
+    DEBUG('cracklib tut nicht, dann wird das PW akzeptiert');
42
+    warning('Das Passwort konnte aufgrund eines internen Fehlers nicht auf die Passwortstärke geprüft werden.');
43
+    return true;
41 44
   }
42 45
   // Führe eine Überprüfung des Passworts durch
43 46
   $check = crack_check($dict, $password);
Browse code

Added license tags for CC0, README and COPYING

Bernd Wurst authored on11/03/2012 15:40:04
Showing1 changed files
... ...
@@ -1,4 +1,18 @@
1 1
 <?php
2
+/*
3
+This file belongs to the Webinterface of schokokeks.org Hosting
4
+
5
+Written 2008-2012 by schokokeks.org Hosting, namely
6
+  Bernd Wurst <bernd@schokokeks.org>
7
+  Hanno Böck <hanno@schokokeks.org>
8
+
9
+To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
10
+
11
+You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see 
12
+http://creativecommons.org/publicdomain/zero/1.0/
13
+
14
+Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
15
+*/
2 16
 
3 17
 require_once('inc/error.php');
4 18
 
Browse code

Subusers-Modul in einer ersten funktionsfähigen Version

Bernd Wurst authored on23/11/2011 11:00:31
Showing1 changed files
... ...
@@ -5,6 +5,11 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
+  if ($password == '' || strlen($password) < 4) {
9
+    DEBUG("Passwort zu kurz!");
10
+    return "Passwort ist zu kurz!";
11
+  }
12
+
8 13
   if (! function_exists("crack_opendict"))
9 14
   {
10 15
     DEBUG("cracklib not available!");
Browse code

Erlaube wildcards bei vhosts

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1849 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on15/12/2010 06:43:43
Showing1 changed files
... ...
@@ -78,7 +78,9 @@ function filter_input_hostname( $input, $wildcard=false )
78 78
   $input = ltrim($input, "\t\n\r\x00 .");
79 79
   if (preg_replace("/[^[:alnum:]äöü*\.\-]/", "", $input ) != $input)
80 80
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
81
-  if (! $wildcard && preg_replace("/\*/", "", $input ) != $input)
81
+  if (preg_match("/^.+\*/", $input ))
82
+    system_failure("Ihre Daten enthielten ungültige Zeichen (Wildcard-Stern muss ganz vorne stehen)!");
83
+  if (! $wildcard && preg_replace("/^\*/", "", $input ) != $input)
82 84
     system_failure("Ihre Daten enthielten ungültige Zeichen (Keine Wildcards erlaubt)!");
83 85
   if (strstr($input, '..'))
84 86
     system_failure("Ungültiger Hostname");
Browse code

Erlaube Leerzeichen im Pfad

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1747 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on14/06/2010 09:31:29
Showing1 changed files
... ...
@@ -148,7 +148,7 @@ function check_path( $input )
148 148
       return False;
149 149
     }
150 150
   }
151
-  return (preg_match('/^[A-Za-z0-9.@\/_-]*$/',$input) == 1);
151
+  return (preg_match('/^[ A-Za-z0-9.@\/_-]*$/',$input) == 1);
152 152
 }
153 153
 
154 154
 
Browse code

deprecation of ereg* functions. substitution by preg*

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1530 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on08/12/2009 15:22:13
Showing1 changed files
... ...
@@ -56,7 +56,7 @@ function verify_input_general( $input )
56 56
 
57 57
 function filter_input_username( $input )
58 58
 {
59
-  return ereg_replace("[^[:alnum:]\_\.\+\-]", "", $input );
59
+  return preg_replace("/[^[:alnum:]\_\.\+\-]/", "", $input );
60 60
 }
61 61
 
62 62
 function verify_input_username( $input )
... ...
@@ -76,9 +76,9 @@ function filter_input_hostname( $input, $wildcard=false )
76 76
   $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
77 77
   $input = rtrim($input, "\t\n\r\x00 .");
78 78
   $input = ltrim($input, "\t\n\r\x00 .");
79
-  if (ereg_replace("[^[:alnum:]äöü*\.\-]", "", $input ) != $input)
79
+  if (preg_replace("/[^[:alnum:]äöü*\.\-]/", "", $input ) != $input)
80 80
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
81
-  if (! $wildcard && ereg_replace("\*", "", $input ) != $input)
81
+  if (! $wildcard && preg_replace("/\*/", "", $input ) != $input)
82 82
     system_failure("Ihre Daten enthielten ungültige Zeichen (Keine Wildcards erlaubt)!");
83 83
   if (strstr($input, '..'))
84 84
     system_failure("Ungültiger Hostname");
... ...
@@ -111,14 +111,14 @@ function verify_input_ipv6( $input )
111 111
 
112 112
 function filter_quotes( $input )
113 113
 {
114
-  return ereg_replace('["\'`]', '', $input );
114
+  return preg_replace('/["\'`]/', '', $input );
115 115
 }
116 116
 
117 117
 
118 118
 
119 119
 function filter_shell( $input )
120 120
 {
121
-  return ereg_replace('[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]', '', $input );
121
+  return preg_replace('/[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]/', '', $input );
122 122
 }
123 123
 
124 124
 function verify_shell( $input )
Browse code

detect if cracklib is installed

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1518 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on23/11/2009 16:48:15
Showing1 changed files
... ...
@@ -5,6 +5,11 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
+  if (! function_exists("crack_opendict"))
9
+  {
10
+    DEBUG("cracklib not available!");
11
+    return true;
12
+  }
8 13
   if (config('use_cracklib') === NULL or config('use_cracklib') === false) {
9 14
     DEBUG('Cracklib deaktiviert');
10 15
     return true;
Browse code

Logger mit Logleveln

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1466 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on14/09/2009 13:31:08
Showing1 changed files
... ...
@@ -12,7 +12,7 @@ function strong_password($password)
12 12
   DEBUG("Öffne Wörterbuch: ".config('cracklib_dict'));
13 13
   if (! ($dict = crack_opendict(config('cracklib_dict'))))
14 14
   {
15
-    logger("inc/security", "cracklib", "could not open cracklib-dictionary »".config('cracklib_dict')."«");
15
+    logger(LOG_ERR, "inc/security", "cracklib", "could not open cracklib-dictionary »".config('cracklib_dict')."«");
16 16
     system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: ".config('cracklib_dict'));
17 17
   }
18 18
   // Führe eine Überprüfung des Passworts durch
... ...
@@ -44,7 +44,7 @@ function verify_input_general( $input )
44 44
 {
45 45
   if (filter_input_general($input) != $input) {
46 46
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
47
-    logger('inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
47
+    logger(LOG_WARNING, 'inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
48 48
   }
49 49
 }
50 50
 
... ...
@@ -57,7 +57,7 @@ function filter_input_username( $input )
57 57
 function verify_input_username( $input )
58 58
 {
59 59
   if (filter_input_username( $input ) != $input) {
60
-    logger('inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
60
+    logger(LOG_WARNING, 'inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
61 61
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
62 62
   }
63 63
 }
... ...
@@ -83,7 +83,7 @@ function filter_input_hostname( $input, $wildcard=false )
83 83
 function verify_input_hostname( $input, $wildcard=false )
84 84
 {
85 85
   if (filter_input_hostname( $input, $wildcard ) != $input) {
86
-    logger('inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
86
+    logger(LOG_WARNING, 'inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
87 87
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
88 88
   }
89 89
 }
... ...
@@ -129,7 +129,7 @@ function check_path( $input )
129 129
   DEBUG("checking {$input} for valid path name");
130 130
   if ($input != filter_input_general($input))
131 131
   {
132
-    logger('inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
132
+    logger(LOG_WARNING, 'inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
133 133
     DEBUG("HTML-Krams im Pfad");
134 134
     return False;
135 135
   }
... ...
@@ -138,7 +138,7 @@ function check_path( $input )
138 138
   {
139 139
     if ($item == '..')
140 140
     {
141
-      logger('inc/security', 'check_path', '»..« im Pfad: '.$input);
141
+      logger(LOG_WARNING, 'inc/security', 'check_path', '»..« im Pfad: '.$input);
142 142
       DEBUG("»..« im Pfad");
143 143
       return False;
144 144
     }
Browse code

Erlaube * im Hostname

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1382 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on01/06/2009 14:35:31
Showing1 changed files
... ...
@@ -64,21 +64,25 @@ function verify_input_username( $input )
64 64
 
65 65
 
66 66
 
67
-function filter_input_hostname( $input )
67
+function filter_input_hostname( $input, $wildcard=false )
68 68
 {
69
+  // FIXME: Eine "filter"-Funktion sollte keinen system_failure verursachen sondern einfach einen bereinigten String liefern.
70
+  
69 71
   $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input));
70 72
   $input = rtrim($input, "\t\n\r\x00 .");
71 73
   $input = ltrim($input, "\t\n\r\x00 .");
72
-  if (ereg_replace("[^[:alnum:]äöü\.\-]", "", $input ) != $input)
74
+  if (ereg_replace("[^[:alnum:]äöü*\.\-]", "", $input ) != $input)
73 75
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
76
+  if (! $wildcard && ereg_replace("\*", "", $input ) != $input)
77
+    system_failure("Ihre Daten enthielten ungültige Zeichen (Keine Wildcards erlaubt)!");
74 78
   if (strstr($input, '..'))
75 79
     system_failure("Ungültiger Hostname");
76 80
   return $input;
77 81
 }
78 82
 
79
-function verify_input_hostname( $input )
83
+function verify_input_hostname( $input, $wildcard=false )
80 84
 {
81
-  if (filter_input_hostname( $input ) != $input) {
85
+  if (filter_input_hostname( $input, $wildcard ) != $input) {
82 86
     logger('inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
83 87
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
84 88
   }
Browse code

Einige Dummheiten repariert, die beim ersetzen von $config durch config() aufgetreten sind. Zudem einige Closing-Tag-mismatches repariert, die man nur sieht wenn man XHTML-Modus einschaltet

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1377 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on23/05/2009 15:55:23
Showing1 changed files
... ...
@@ -5,15 +5,15 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
-  if (isset(config('use_cracklib')) and config('use_cracklib') == false) {
8
+  if (config('use_cracklib') === NULL or config('use_cracklib') === false) {
9 9
     DEBUG('Cracklib deaktiviert');
10 10
     return true;
11 11
   }
12
-  DEBUG("Öffne Wörterbuch: {config('cracklib_dict')}");
12
+  DEBUG("Öffne Wörterbuch: ".config('cracklib_dict'));
13 13
   if (! ($dict = crack_opendict(config('cracklib_dict'))))
14 14
   {
15
-    logger("inc/security", "cracklib", "could not open cracklib-dictionary »{config('cracklib_dict')}«");
16
-    system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: {config('cracklib_dict')}");
15
+    logger("inc/security", "cracklib", "could not open cracklib-dictionary »".config('cracklib_dict')."«");
16
+    system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: ".config('cracklib_dict'));
17 17
   }
18 18
   // Führe eine Überprüfung des Passworts durch
19 19
   $check = crack_check($dict, $password);
Browse code

Mehr config-optionen und config via Wrapper-Funktion benutzen

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1376 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on23/05/2009 15:24:52
Showing1 changed files
... ...
@@ -5,16 +5,15 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
-  global $config;
9
-  if (isset($config['use_cracklib']) and $config['use_cracklib'] == false) {
8
+  if (isset(config('use_cracklib')) and config('use_cracklib') == false) {
10 9
     DEBUG('Cracklib deaktiviert');
11 10
     return true;
12 11
   }
13
-  DEBUG("Öffne Wörterbuch: {$config['cracklib_dict']}");
14
-  if (! ($dict = crack_opendict($config['cracklib_dict'])))
12
+  DEBUG("Öffne Wörterbuch: {config('cracklib_dict')}");
13
+  if (! ($dict = crack_opendict(config('cracklib_dict'))))
15 14
   {
16
-    logger("inc/security", "cracklib", "could not open cracklib-dictionary »{$config['cracklib_dict']}«");
17
-    system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: {$config['cracklib_dict']}");
15
+    logger("inc/security", "cracklib", "could not open cracklib-dictionary »{config('cracklib_dict')}«");
16
+    system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: {config('cracklib_dict')}");
18 17
   }
19 18
   // Führe eine Überprüfung des Passworts durch
20 19
   $check = crack_check($dict, $password);
Browse code

* alle internen Links sinnvoll (und gleichartig!) encoden * Automatischer Upgrader für Drupal funktioniert jetzt

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1301 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on07/03/2009 14:48:53
Showing1 changed files
... ...
@@ -144,6 +144,23 @@ function check_path( $input )
144 144
 }
145 145
 
146 146
 
147
+function in_homedir($path)
148
+{
149
+  DEBUG("Prüfe »{$path}«");
150
+  if (! check_path($path))
151
+  {
152
+    DEBUG('Kein Pfad');
153
+    return False;
154
+  }
155
+  if (! isset($_SESSION['userinfo']['homedir']))
156
+  {
157
+    DEBUG("Kann homedir nicht ermitteln");
158
+    return False;
159
+  }
160
+  return strncmp($_SESSION['userinfo']['homedir'], $path, count($_SESSION['userinfo']['homedir'])) == 0;
161
+}
162
+
163
+
147 164
 function check_emailaddr( $input )
148 165
 {
149 166
   return (bool) filter_var($input, FILTER_VALIDATE_EMAIL) == $input;
Browse code

use config

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1255 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on23/02/2009 19:29:41
Showing1 changed files
... ...
@@ -5,6 +5,7 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
+  global $config;
8 9
   if (isset($config['use_cracklib']) and $config['use_cracklib'] == false) {
9 10
     DEBUG('Cracklib deaktiviert');
10 11
     return true;
Browse code

database config options

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1253 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on23/02/2009 16:15:54
Showing1 changed files
... ...
@@ -5,7 +5,6 @@ require_once('inc/error.php');
5 5
 
6 6
 function strong_password($password)
7 7
 {
8
-  include("config.php");
9 8
   if (isset($config['use_cracklib']) and $config['use_cracklib'] == false) {
10 9
     DEBUG('Cracklib deaktiviert');
11 10
     return true;
Browse code

Add IP-address patterns

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1140 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on15/08/2008 20:07:57
Showing1 changed files
... ...
@@ -58,8 +58,8 @@ function filter_input_username( $input )
58 58
 function verify_input_username( $input )
59 59
 {
60 60
   if (filter_input_username( $input ) != $input) {
61
-    system_failure("Ihre Daten enthielten ungültige Zeichen!");
62 61
     logger('inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
62
+    system_failure("Ihre Daten enthielten ungültige Zeichen!");
63 63
   }
64 64
 }
65 65
 
... ...
@@ -77,6 +77,28 @@ function filter_input_hostname( $input )
77 77
   return $input;
78 78
 }
79 79
 
80
+function verify_input_hostname( $input )
81
+{
82
+  if (filter_input_hostname( $input ) != $input) {
83
+    logger('inc/security', 'verify_input_hostname', 'Ungültige Daten: '.$input);
84
+    system_failure("Ihre Daten enthielten ungültige Zeichen!");
85
+  }
86
+}
87
+
88
+
89
+function verify_input_ipv4( $input )
90
+{
91
+  if (! preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $input))
92
+    system_failure('Keine IP-Adresse');
93
+}
94
+
95
+
96
+function verify_input_ipv6( $input )
97
+{
98
+  // ripped from Perl module Net-IPv6Addr v0.2
99
+  if (! preg_match("/^(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|[0-9a-f]{0,4}::|:(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){1,6}:|(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}|(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}|(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}|(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}|(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}|(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4}))$/i", $input))
100
+    system_failure("Ungültige IPv6-Adresse");
101
+}
80 102
 
81 103
 
82 104
 function filter_quotes( $input )
Browse code

eliminate .php extensions for URLs

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1130 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on08/08/2008 19:35:02
Showing1 changed files
... ...
@@ -13,7 +13,7 @@ function strong_password($password)
13 13
   DEBUG("Öffne Wörterbuch: {$config['cracklib_dict']}");
14 14
   if (! ($dict = crack_opendict($config['cracklib_dict'])))
15 15
   {
16
-    logger("inc/security.php", "cracklib", "could not open cracklib-dictionary »{$config['cracklib_dict']}«");
16
+    logger("inc/security", "cracklib", "could not open cracklib-dictionary »{$config['cracklib_dict']}«");
17 17
     system_failure("Kann Crack-Lib-Wörterbuch nicht öffnen: {$config['cracklib_dict']}");
18 18
   }
19 19
   // Führe eine Überprüfung des Passworts durch
... ...
@@ -45,7 +45,7 @@ function verify_input_general( $input )
45 45
 {
46 46
   if (filter_input_general($input) != $input) {
47 47
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
48
-    logger('inc/security.php', 'verify_input_general', 'Ungültige Daten: '.$input);
48
+    logger('inc/security', 'verify_input_general', 'Ungültige Daten: '.$input);
49 49
   }
50 50
 }
51 51
 
... ...
@@ -59,7 +59,7 @@ function verify_input_username( $input )
59 59
 {
60 60
   if (filter_input_username( $input ) != $input) {
61 61
     system_failure("Ihre Daten enthielten ungültige Zeichen!");
62
-    logger('inc/security.php', 'verify_input_username', 'Ungültige Daten: '.$input);
62
+    logger('inc/security', 'verify_input_username', 'Ungültige Daten: '.$input);
63 63
   }
64 64
 }
65 65
 
... ...
@@ -104,7 +104,7 @@ function check_path( $input )
104 104
   DEBUG("checking {$input} for valid path name");
105 105
   if ($input != filter_input_general($input))
106 106
   {
107
-    logger('inc/security.php', 'check_path', 'HTML-Krams im Pfad: '.$input);
107
+    logger('inc/security', 'check_path', 'HTML-Krams im Pfad: '.$input);
108 108
     DEBUG("HTML-Krams im Pfad");
109 109
     return False;
110 110
   }
... ...
@@ -113,7 +113,7 @@ function check_path( $input )
113 113
   {
114 114
     if ($item == '..')
115 115
     {
116