Bernd Wurst commited on 2019-04-10 07:56:36
Zeige 3 geänderte Dateien mit 21 Einfügungen und 0 Löschungen.
| ... | ... |
@@ -189,6 +189,13 @@ function logger($severity, $scriptname, $scope, $message) |
| 189 | 189 |
db_query("INSERT INTO misc.scriptlog (remote, user,scriptname,scope,message) VALUES (:remote, :user, :scriptname, :scope, :message)", $args);
|
| 190 | 190 |
} |
| 191 | 191 |
|
| 192 |
+function count_failed_logins() {
|
|
| 193 |
+ $result = db_query("SELECT count(*) AS num FROM misc.scriptlog WHERE user IS NULL AND scriptname='session/start' AND scope='login' AND message LIKE 'wrong user data%' AND remote=:remote AND `timestamp` > NOW() - INTERVAL 10 MINUTE", array(":remote" => $_SERVER['REMOTE_ADDR']));
|
|
| 194 |
+ $data = $result->fetch(); |
|
| 195 |
+ DEBUG('seen '.$data['num'].' failed logins from this address within 10 minutes');
|
|
| 196 |
+ return $data['num']; |
|
| 197 |
+} |
|
| 198 |
+ |
|
| 192 | 199 |
function html_header($arg) |
| 193 | 200 |
{
|
| 194 | 201 |
global $html_header; |
| ... | ... |
@@ -135,6 +135,12 @@ function require_role($roles) |
| 135 | 135 |
|
| 136 | 136 |
function login_screen($why = null) |
| 137 | 137 |
{
|
| 138 |
+ $failed = count_failed_logins(); |
|
| 139 |
+ if ($failed > 5) {
|
|
| 140 |
+ global $title; |
|
| 141 |
+ $title = ''; |
|
| 142 |
+ system_failure("Zu viele fehlgeschlagenen Login-Versuche! Bitte warten Sie einige Minuten bis zum nächsten Versuch!");
|
|
| 143 |
+ } |
|
| 138 | 144 |
if (! $why) {
|
| 139 | 145 |
if (isset($_COOKIE['CLIENTCERT_AUTOLOGIN']) && $_COOKIE['CLIENTCERT_AUTOLOGIN'] == '1') {
|
| 140 | 146 |
redirect("/certlogin/index.php?destination=".urlencode($_SERVER['REQUEST_URI']));
|
| ... | ... |
@@ -32,6 +32,14 @@ define('ROLE_SUBUSER', 32);
|
| 32 | 32 |
|
| 33 | 33 |
function find_role($login, $password, $i_am_admin = false) |
| 34 | 34 |
{
|
| 35 |
+ if (!$i_am_admin) {
|
|
| 36 |
+ $failed = count_failed_logins(); |
|
| 37 |
+ if ($failed > 5) {
|
|
| 38 |
+ global $title; |
|
| 39 |
+ $title = ''; |
|
| 40 |
+ system_failure("Zu viele fehlgeschlagenen Login-Versuche! Bitte warten Sie einige Minuten bis zum nächsten Versuch!");
|
|
| 41 |
+ } |
|
| 42 |
+ } |
|
| 35 | 43 |
// Domain-Admin? <not implemented> |
| 36 | 44 |
// System-User? |
| 37 | 45 |
$uid = (int) $login; |
| 38 | 46 |