secure for race conditions
This commit is contained in:
parent
91b9a11771
commit
eb9dfaa609
69
preis.php
69
preis.php
|
@ -15,37 +15,46 @@ $salt = rand(1, 100000);
|
||||||
$token = hash('ripemd160', $pwd.$salt);
|
$token = hash('ripemd160', $pwd.$salt);
|
||||||
//mailhash which will be used for double vote check -> only hashes stuff before @tu-dresden or @mailbox.tu-dresden to avoid double vote in case of aliases.
|
//mailhash which will be used for double vote check -> only hashes stuff before @tu-dresden or @mailbox.tu-dresden to avoid double vote in case of aliases.
|
||||||
$mailHash = hash('ripemd160', strtolower(explode("+",explode("@",$empfaenger)[0])[0]));
|
$mailHash = hash('ripemd160', strtolower(explode("+",explode("@",$empfaenger)[0])[0]));
|
||||||
if(strpos($empfaenger, "@mailbox.tu-dresden.de") != false and !strpos(file_get_contents('../../.hMail.txt'), $mailHash)){
|
$sem = sem_get(123, 1, 0666, 1);
|
||||||
echo strpos(file_get_contents('../../.hMail.txt'), $mailHash);
|
if (sem_acquire($sem)) {
|
||||||
//nicht bereits abgesendet (kein hash match) und eine @mailbox addr.
|
//critical section to avoid double vote in case of high demands
|
||||||
$betreff = 'Formular: Lehrpreise';
|
if(strpos($empfaenger, "mail.") === false and strpos($empfaenger, "@mailbox.tu-dresden.de") != false and !strpos(file_get_contents('../../.hMail.txt'), $mailHash)){
|
||||||
$nachricht = "Hallo.\nHier ist die Umfrage für die Lehrpreis Wahl: https://bildungsportal.sachsen.de/umfragen/limesurvey/index.php/488672?lang=de&authkey=".$token."\nVielen Dank für deine Beteiligung!\n\nHi.\nHere is the Link for the teaching award voting: https://bildungsportal.sachsen.de/umfragen/limesurvey/index.php/488672?lang=de&authkey=".$token."\nThanks alot for your participation!";
|
//nicht bereits abgesendet (kein hash match) und eine @mailbox addr.
|
||||||
$nachricht = wordwrap($nachricht, 80, "\r\n");
|
$betreff = 'Formular: Lehrpreise';
|
||||||
$header = 'From: fsr@ifsr.de' . "\r\n" .
|
$nachricht = "Hallo.\nHier ist die Umfrage für die Lehrpreis Wahl: https://bildungsportal.sachsen.de/umfragen/limesurvey/index.php/146778?newtest=Y&lang=de&authkey=".$token."\nVielen Dank für deine Beteiligung!\n\nHi.\nHere is the Link for the teaching award voting: https://bildungsportal.sachsen.de/umfragen/limesurvey/index.php/146778?newtest=Y&lang=en&authkey=".$token."\nThanks alot for your participation!";
|
||||||
'Reply-To: fsr@ifsr.de' . "\r\n" .
|
$nachricht = wordwrap($nachricht, 80, "\r\n");
|
||||||
'X-Mailer: PHP/' . phpversion();
|
$header = 'From: fsr@ifsr.de' . "\r\n" .
|
||||||
|
'Reply-To: fsr@ifsr.de' . "\r\n" .
|
||||||
|
'X-Mailer: PHP/' . phpversion();
|
||||||
|
|
||||||
|
//mail senden
|
||||||
|
mail($empfaenger, $betreff, $nachricht, $header);
|
||||||
|
//hash speichern
|
||||||
|
file_put_contents("../../.hMail.txt", $mailHash."\n", FILE_APPEND);
|
||||||
|
sem_release($sem);
|
||||||
|
//Erfolgsmeldung
|
||||||
|
echo "<h1>Success, please check your mail.</h1><h1>Mail erfolgreich versendet.</body></html>";
|
||||||
|
|
||||||
|
|
||||||
//mail senden
|
|
||||||
mail($empfaenger, $betreff, $nachricht, $header);
|
|
||||||
//hash speichern
|
|
||||||
file_put_contents("../../.hMail.txt", $mailHash."\n", FILE_APPEND);
|
|
||||||
//Erfolgsmeldung
|
|
||||||
echo "<h1>Success, please check your mail.</h1><h1>Mail erfolgreich versendet.</body></html>";
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(strpos($empfaenger, "@tu-dresden.de") != false or strpos($empfaenger, "@ifsr.de") != false){
|
|
||||||
echo "<div class='textBx'><h1>Request/Nachfrage</h1>
|
|
||||||
Da deine Mail Adresse keine @mailbox Adresse ist, würden wir gerne überprüfen, ob du noch studierst.<br>
|
|
||||||
Wenn du mit der Überprüfung einverstanden bist, bestätige das bitte unten.<br>
|
|
||||||
Wir werden das mittels der ZiH Datenbank abgleichen und - solltest du Student:in sein, dir den Umfragelink zusenden.<br>
|
|
||||||
Auch trotz dieser Überprüfung wird nicht abgespeichert, welches Umfrageergebnis zu welcher E-mail Adresse gehört.<br><br>
|
|
||||||
Since your email address is not an @mailbox address, we would like to check if you are still a student.<br>
|
|
||||||
If you agree with the verification, please confirm below.<br>
|
|
||||||
We will check this against the ZiH database and - if you are a student - send you the survey link.<br>Even with this check, we will not save which survey result belongs to which email address.<hr>
|
|
||||||
<a href='check.php?mailto=".$empfaenger."'>Ich stimme der Überprüfung zu./I do agree with the check.</a></div>
|
|
||||||
</body></html>";
|
|
||||||
}else{
|
|
||||||
echo "<h1>Falsche Mail Adresse oder bereits abgestimmt</h1><h1>Mail Adress wrong or missing or allready voted.</h1>Bitte gebe deine TU Email Adresse an!<br>Please enter your University Mail adress!</body></html>";
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
if(strpos($empfaenger, "@tu-dresden.de") != false or strpos($empfaenger, "@ifsr.de") != false){
|
||||||
|
echo "<div class='textBx'><h1>Request/Nachfrage</h1>
|
||||||
|
Da deine Mail Adresse keine @mailbox Adresse ist, würden wir gerne überprüfen, ob du noch studierst.<br>
|
||||||
|
Wenn du mit der Überprüfung einverstanden bist, bestätige das bitte unten.<br>
|
||||||
|
Wir werden das mittels der ZiH Datenbank abgleichen und - solltest du Student:in sein, dir den Umfragelink zusenden.<br>
|
||||||
|
Auch trotz dieser Überprüfung wird nicht abgespeichert, welches Umfrageergebnis zu welcher E-mail Adresse gehört.<br><br>
|
||||||
|
Since your email address is not an @mailbox address, we would like to check if you are still a student.<br>
|
||||||
|
If you agree with the verification, please confirm below.<br>
|
||||||
|
We will check this against the ZiH database and - if you are a student - send you the survey link.<br>Even with this check, we will not save which survey result belongs to which email address.<hr>
|
||||||
|
<a href='check.php?mailto=".$empfaenger."'>Ich stimme der Überprüfung zu./I do agree with the check.</a></div>
|
||||||
|
</body></html>";
|
||||||
|
}else{
|
||||||
|
echo "<h1>Falsche Mail Adresse oder bereits abgestimmt</h1><h1>Mail Adress wrong or missing or allready voted.</h1>Bitte gebe deine TU Email Adresse an!<br>Please enter your University Mail adress!</body></html>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//semaphore could not be set.
|
||||||
|
die("Internal Error. If this happens too often, please write fsr@ifsr.de<br><h1>Sorry</h1>");
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in a new issue