Compare commits
3 commits
a82ea913bd
...
483ee7801e
Author | SHA1 | Date | |
---|---|---|---|
bernd | 483ee7801e | ||
bernd | e558f324bd | ||
bernd | 159d831c17 |
14
lib/base.php
14
lib/base.php
|
@ -64,14 +64,13 @@ class BaseClass {
|
|||
$this->log->setLogLevel($this->config->getLogLevel());
|
||||
/**
|
||||
* Instanz der Klasse Datenbank erstellen. Die Datenbank bekommt die
|
||||
* Instanz der Klasse Config übergeben. Wenn nicht vorhanden wird
|
||||
* die Tabelle requests angelegt.
|
||||
* Instanzen der Klassen Config und Logger übergeben.
|
||||
*/
|
||||
try {
|
||||
$this->db = getDatabase($this->config, $this->log);
|
||||
} catch (Exception $e) {
|
||||
$this->log->e("Error: {$e->getMessage()}");
|
||||
}
|
||||
try {
|
||||
$this->db = getDatabase($this->config, $this->log);
|
||||
} catch (Exception $e) {
|
||||
$this->log->e("Error: {$e->getMessage()}");
|
||||
}
|
||||
}
|
||||
|
||||
public function generateToken(int $length): bool {
|
||||
|
@ -79,6 +78,7 @@ class BaseClass {
|
|||
/**
|
||||
* Generiert einen Token aus zufälligen Bits der Länge 'length'.
|
||||
* Speichert diesen Token in der als Refeenz übergebenen Variable.
|
||||
* TODO: Die Funktion nach common.php auslagern?
|
||||
*/
|
||||
|
||||
try {
|
||||
|
|
|
@ -28,7 +28,6 @@ function getNick(string $mid): string
|
|||
{
|
||||
/**
|
||||
* Extrahiert aus einer Matrix-ID den localpart.
|
||||
* TODO: In eine bibliothek auslagern? (/lib/common)
|
||||
*/
|
||||
|
||||
$uid = "";
|
||||
|
|
|
@ -175,7 +175,7 @@ class Request extends BaseClass {
|
|||
// Wenn es der erste Request ist -> return true
|
||||
$count = count($timestamps);
|
||||
if ($count === 0) {
|
||||
$this->log->i("First request from {$_SERVER['REMOTE_ADDR']}");
|
||||
$this->log->d("First request from {$_SERVER['REMOTE_ADDR']}");
|
||||
return true;
|
||||
}
|
||||
$first = $timestamps[array_key_first($timestamps)]['time'];
|
||||
|
@ -189,15 +189,15 @@ class Request extends BaseClass {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Wenn der letzte Request weniger als 10 Sekunden her ist -> return
|
||||
// Wenn der letzte Request weniger als 5 Sekunden her ist -> return
|
||||
// false
|
||||
if (($now - $last) < 5) {
|
||||
$this->log->n("Time between two requests under 5 seconds");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wenn die durchschnittliche Dauer zwischen allen Anfragen unter 30
|
||||
// Sekunden liegt -> return false
|
||||
// Wenn die durchschnittliche Dauer zwischen allen Anfragen bei mehr
|
||||
// als 3 anfragen unter 30 Sekunden liegt -> return false
|
||||
if (($average) < 30 && $count > 3) {
|
||||
$this->log->n("Duration between all requests under 10 seconds");
|
||||
return false;
|
||||
|
@ -235,7 +235,12 @@ class Request extends BaseClass {
|
|||
|
||||
/**
|
||||
* Verschickt die Mail mit dem Verifizierungslink.
|
||||
* TODO: Reicht filter_input()? Was kann hier passieren?
|
||||
* TODO: Reicht filter_input()? Was kann hier passieren? Beim Check
|
||||
* der Mailadresse verwenden wir FILTER_VALIDATE_EMAIL. SANITZE
|
||||
* könnte eine Mail an eine andere Adresse schicken, als dann in der
|
||||
* Datenbankn gespeichert wäre. Besser hier auch VALIDATE benutzen?
|
||||
* TODO: Wie sieht das mit dem Risiko aus, daß jemand über die
|
||||
* Konfigurationsdatei Code einschleust? Was kann man dagegen tun?
|
||||
*/
|
||||
|
||||
$mailTo = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
|
||||
|
@ -251,7 +256,7 @@ class Request extends BaseClass {
|
|||
$mailbody = MAILTEXT1 . " {$mxdomain} " . MAILTEXT2 . "\r\n\r\n" . $link . $mailClosure;
|
||||
if (mail($mailTo, $mailSubject, $mailbody, $mailFrom))
|
||||
{
|
||||
$this->log->i("Validationmail successfull send");
|
||||
$this->log->n("Validationmail successfull send to {$mailTo}");
|
||||
return true;
|
||||
}
|
||||
$this->log->e("Sending validation mail failed");
|
||||
|
|
Loading…
Reference in a new issue