goedendag allen
ik zou graag hulp willen met een script van een site die ik onderhou
er is een script en die verstuurd spam op de server krijg ik deze info
vanuit dit script word de spam verstuurd

public_html/assets/classes/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php:46

de ene dag word er 5 mailtjes vestuurd maar de andere dag wel 500
.
ik wil dit graag oplossen voor de klant maar zit met de handen in mijn haren
dus daarom vraag ik jullie hulp even.

kan ik iets aanpassen dat het stopt.

volgens de de info wat ik krijg word het vanuit regel 46 verstuurd ik heb een pijl erbij gezet --->

dit is een kopie van het script.

alvast bedankt


<?php

/*
Invokes the mail() function in Swift Mailer.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>;.

*/

/**
* This is the implementation class for {@link Swift_Transport_MailInvoker}.
*
* @package Swift
* @subpackage Transport
* @author Chris Corbyn
*/
class Swift_Transport_SimpleMailInvoker implements Swift_Transport_MailInvoker
{
/**
* Send mail via the mail() function.
*
* This method takes the same arguments as PHP mail().
*
* @param string $to
* @param string $subject
* @param string $body
* @param string $headers
* @param string $extraParams
*
* @return boolean
*/
---> public function mail($to, $subject, $body, $headers = null, $extraParams = null)
{
if (!ini_get('safe_mode')) {
return @mail($to, $subject, $body, $headers, $extraParams);
} else {
return @mail($to, $subject, $body, $headers);
}
}
}
definieer eens wat er gebeurt.

Kan een gebruiker zelf de inhoud van de mail invullen en het TO adres?

Of gaat alle mail eigenlijk naar [email protected], maar hebben spammers een manier gevonden om ook naar aan ander adres te sturen.

In eigen gemaakte scripts wordt nogal eens nagelaten om te controleren of $to precies 1 mailadres bevat en of $subject geen enters bevat.

Maar aangezien je Swift gebruikt, verwacht ik daar wel een controle op.
het zijn alleen spambots van yahoo en google enz.

Zorg dat je re-Captcha gebruikt. Of blokkeer je contactformulier voor alles buiten Nederland, België en Duitsland, als je enkel in Nederland en de omliggende landen opereert.

Trouwens, Yahoo en Google hebben geen spambots. Dat zal niet goed voor zo'n groot miljardenbedrijf zijn ;-)
kan ik dit script aanpassen om via een smtp server met ssl mails te laten versturen.
dit zou naar mijn idee de oplossing zijn .

er zit een standaard smtp mail functie in de site maar allen zonder ssl.

graag advies
Kan, maar dat houdt geen spambotjes tegen.
Die vullen geautomatiseerd het formulier in, en drukken geautomatiseerd op versturen.
ok uhm ik wil me er niet mee bemoeien en misschien heb ik het fout maar aangezien dit een standaard script is en via een class loopt kan dit inderdaad gebeuren en maakt even niet uit of dit via een bot gebeurt of niet

ik heb zelf namelijk ook vroeger heel veel van deze ellende gehad
en eigenlijk best wel simpel dicht te timmeren

dus heb ik een aantal vragen en misschien zit de oplossing hier in

waar wordt die class opgevraagd want dit is alleen het deel die het verstuurd
want
to, $subject, $body, $headers
dat wordt ergens dus, door een bot ingevult en daarna wordt het door die class verstuurd

dus inderdaad zoals Arien zegt zet bij het script deel waarmee de mails verstuurd worden, dus bv bij het form deel een re-Captcha dit scheeld al heel erg veel ellende

zet je chmod zodat alleen personen en server je form kunnen gebruiken dus blokkeer Cross-site scripting (XSS)
dit is automatisch opgelost als je een re-capcha erin zet
misschien zijn er betere manieren maar dit is ff een voorbeeld




[size=xsmall]Toevoeging op 28/08/2019 13:51:46:[/size]

oplossing is eigelijk heel simple
zoals Arien eigelijk al zegt
in je mail form zet daar de re-captha V3 in
deze is automatich en de klant heeft dus geen nummertje of verkeersborden aan te klikken
lees even hier
https://www.google.com/recaptcha/intro/v3.html

want zolang bots bij jouw submit page kunnen zal je het probleem niet wegkrijgen


vergeten te vermelden er is geen contact formulier via de site dus recaptha is alleen voor aanmelden hier staat een recaptha op .

het word echt via het bovenstaande script verstuurd ik heb gister avond de rechten al aangepast maar daarmee is het probleem niet opgelost.

de site stuurt ook via dit script mail naar de eigenaar van de site als er een bestelling gedaan is ect.
ook zit er een smtp script in maar dit werkt niet meer sinds ze met ssl werken de oplossing zou kunnen zijn een mailserver zonder verificatie .
maar deze zijn er niet .

voor de rest is er niks dat je via de site een mail kan versturen alles verloopt via mail .
ok uhm voor ssl gebruik letsencrypt
dat is gratis en werkt perfect

verder

welk deel van jouw script vraagt deze class aan want dit weten die bots blijkbaar ook

wat je dan kan doen is ervoor zorgen dat alleen dat deel van het script die class mag oproepen
je kan ook nog extra headers maken om het hiermee te verbeteren

en ook zou ik even kijken naar de dns record van het domein waar het om draait
en dan de mail even testen met https://www.mail-tester.com

hier geven ze precies aan of jouw mail wel goed en veilig is
je kunt de rechten niet aanpassen op een manier dat iemand er niet meer bij komt.

Een buitenstaander spreekt Apache aan, met de vraag om index.php. Apache moet vervolgens het bestand index.php kunnen lezen (in een directory die toegankelijk is voor Apache, en de file moet toegankelijk zijn.)

En een script dat een class bevat, is verder nuttellos als je die via Apache opvraagt. Dat doet niet vanzelf iets.

Kijk eens in de logs van Apache welk script werkelijk aangesproken werd.

Reageren