Filterfuncties sanitize, validate, etc. betrouwbaar?
Door
Hans De Ridder
op 23-03-2016 12:06
gewijzigd op 23-03-2016 12:08
4.539 views
Ik gebruik om een check op een url uit te voeren een aantal filters.
Bij testen leek alles goed te gaan. Totdat ik de extensie eens niet erbij zette.
Ik testte bijv. op http://www.regenboogjes.nl.
Laat ik de '.nl' weg dan komt er toch een true.
Er zijn tal van futoristische scripts om toch te checken op de extensie.
Maar moet ik me nu zorgen maken bij de toepassing van filters.
Want zijn veel filters beschikbaar.
Toepassing lijkt ook nog gebruikte browser gevoelig te zijn.
En er is ook verschil tussen ipv4 en ipv6 mogelijkheid.
Ik heb nu een aantal extensies die standaard mogen ingevuld in het registratieformulier.
En laat ook checken of er wel een extensie is ingevuld.
Bij afwijkingen verwijs ik naar de webmaster.
Want er zullen ook websites bijzitten van internetproviders.
En die hebben afwijkende namen van wat ik toesta.
.nl, .com, .org, .biz, .info, .eu, .be, .de.
Ik heb ook een status kolom in de database.
Die kan ik in voorkomende gevallen gebruiken om afwijkingen toch toe te staan.
Je beperkt dus de invoer heel strikt, waarbij je voor lief neemt dat er talloze geldige invoeren verboden worden.
En dat allemaal omdat de functie filter_var() niet werkt zoals jij dat wilt, danwel omdat je hem verkeerd toepast.
Persoonlijk vind ik dat je op de verkeerde weg bent.
Maar het is jouw applicatie natuurlijk.
Ik ken het (hobby) muziekwereldje vrij goed.
Meesten hebben helemaal geen website.
Veelal verloopt communicatie via facebook.
Die kan in ander veld ook worden opgegeven.
Net als een youtube filmpje met opname.
En als er een website is dan meestal met .nl of .org.
Gelet op het aantal muziekvrienden op mijn facebook uit Vlaanderen en Duitsland heb ik die extensie er ook bij staan.
Een aantal artiesten hebben wel een eigen bedrijf, dat niets met artiest zijn te maken heeft.
Daar verwijzen ze dan naar of naar een subpagina.
In de weinig voorkomende gevallen dat dit afwijkt maak ik dan een uitzondering.
Zal zo even jouw functie uittesten Ward.
Bedankt voor je tip.
Dit had ik al voorgesteld... lol. Als je niet begrijpt wat je wordt verteld vraag dan om extra uitleg. Anders wordt er waarschijnlijk aangenomen dat je snapt wat wordt voorgesteld.
Zoals ik volgens mij al eerder aangaf is de beste manier gewoon kijken of je de pagina kunt opvragen en dan de HTTP statuscode inspecteren (deze zou 200 moeten zijn).
In zijn eenvoudigste vorm zou dit zoiets worden (ook weer cURL, lijkt beter zijn ding te doen dan sockets). Je hoeft hierbij ook enkel de headers (HEAD) op te halen, en niet per se alle inhoud (GET):
<?php
function isOnline($url) {
$cp = curl_init();
curl_setopt($cp, CURLOPT_URL, $url);
curl_setopt($cp, CURLOPT_RETURNTRANSFER, true); // return response as string
curl_setopt($cp, CURLOPT_HEADER, true); // include reponse header in response
curl_setopt($cp, CURLOPT_NOBODY, true); // true = HEAD, false = GET
curl_setopt($cp, CURLINFO_HEADER_OUT, true); // track request header so you can see what request you sent
curl_setopt($cp, CURLOPT_SSL_VERIFYPEER, false); // for HTTPS domains; ugly, but effective
$response = curl_exec($cp);
// echo '<pre>'.htmlspecialchars($response, ENT_QUOTES, 'UTF-8').'</pre>';
// echo curl_getinfo($cp, CURLINFO_HEADER_OUT); // inspect request header in case something went wrong
return curl_getinfo($cp, CURLINFO_HTTP_CODE) === 200;
}
?>
Bedankt Thomas.
Heb het verwerkt.
Ik denk dat standaard wordt aangehouden http://www.
Want vul ik in: regenboogjes.nl dan vindt hij het prima.
Als ik er echter https van maak of wat anders dan checkt hij het wel.
Maar heb het wel kunnen toepassen, dus de credits gaan met name naar jou.
Ik moet op een bijzondere manier input checken. O.a. ivm problemen met de Buma/Stemra en Stichting Brein.
Daarom kan men bijv. wel invullen dropbox.com. maar geen achtervoegsel, want dat kan verwijzen naar downloads. Overigens is het nooit helemaal veilig, want gaat men via verwijspagina weer doorschakelen dan blijft alleen een handmatige verwijdering over. Maar het is een promotiesite voor artiesten en organisaties onderling. En wil zoveel mogelijk illegaal handelen afschermen voor de leden, maar ook recht doen aan organisaties.En dat is al een hele klus...ook zonder PHP, haha