Absenderpruefung bei PayPal-Mails entfernen
This commit is contained in:
+17
-14
@@ -153,14 +153,14 @@ function paypal_match_participant(PDO $pdo, int $tenantId, string $payerName, ?s
|
||||
}
|
||||
|
||||
/**
|
||||
* Stammt die Mail wirklich von PayPal? Geprueft wird die Domain der
|
||||
* Absenderadresse - inklusive Landesvarianten (paypal.at, paypal.co.uk) und
|
||||
* Versand-Subdomains (e.paypal.de), die PayPal tatsaechlich benutzt.
|
||||
* Sieht der Absender nach PayPal aus? Erkennt Landesvarianten (paypal.at,
|
||||
* paypal.co.uk) und Versand-Subdomains (e.paypal.de); der Vergleich haengt
|
||||
* am Ende der Domain, "paypal.de.beispiel.com" ist also kein PayPal.
|
||||
*
|
||||
* Der Vergleich haengt bewusst am Ende der Domain: "paypal.de.beispiel.com"
|
||||
* ist NICHT PayPal, wuerde bei einer simplen Textsuche nach "@paypal.de"
|
||||
* aber durchrutschen - und damit koennte jemand mit Kenntnis der
|
||||
* Eingangsadresse Zahlungen erfinden.
|
||||
* Nur zur Anzeige in der Diagnose (check-imap-support.php): die
|
||||
* Verarbeitung prueft den Absender bewusst nicht, weil Zahlungsmails auch
|
||||
* ueber manuelle Weiterleitungen ankommen. Massgeblich ist die
|
||||
* Empfangsadresse.
|
||||
*/
|
||||
function paypal_from_is_paypal(string $fromHeader): bool
|
||||
{
|
||||
@@ -381,19 +381,22 @@ function paypal_preview(PDO $pdo, int $tenantId, array $parsed): array
|
||||
}
|
||||
|
||||
/**
|
||||
* Verarbeitet eine rohe PayPal-Mail vollstaendig: Tenant per Plus-Token,
|
||||
* Absenderpruefung, Parsing, Abgleich. Fuer den IMAP-Cron und Tests.
|
||||
* Verarbeitet eine rohe PayPal-Mail vollstaendig: Mandant per Plus-Token der
|
||||
* Empfangsadresse, Parsing, Abgleich. Fuer den IMAP-Cron und Tests.
|
||||
*
|
||||
* Der Absender wird nicht ausgewertet - siehe Kommentar im Rumpf.
|
||||
*
|
||||
* @param string $recipient Empfaengeradresse mit Plus-Token
|
||||
* @param string $fromHeader From-Header der Mail
|
||||
* @param string $rawBody (dekodierter) Mail-Body
|
||||
* @return array{status:string, tenant_id?:int}
|
||||
*/
|
||||
function paypal_process_raw(PDO $pdo, string $recipient, string $fromHeader, string $rawBody, bool $previewOnly = false): array
|
||||
function paypal_process_raw(PDO $pdo, string $recipient, string $rawBody, bool $previewOnly = false): array
|
||||
{
|
||||
if (!paypal_from_is_paypal($fromHeader)) {
|
||||
return ['status' => 'not_from_paypal'];
|
||||
}
|
||||
// Der Absender wird bewusst nicht geprueft: Zahlungsmails erreichen die
|
||||
// Kaffeeliste auch ueber manuelle Weiterleitungen, und dann steht dort
|
||||
// die Adresse des Weiterleitenden statt PayPal. Massgeblich ist allein
|
||||
// die Empfangsadresse - ihr Token bestimmt den Mandanten und ist damit
|
||||
// zugleich das Geheimnis, das den Zugang schuetzt.
|
||||
$token = paypal_inbox_extract_token($recipient);
|
||||
if ($token === null) {
|
||||
return ['status' => 'no_token'];
|
||||
|
||||
Reference in New Issue
Block a user