Filterfuncties sanitize, validate, etc. betrouwbaar?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Senior Front-end Developer

Dit ga je doen Met behulp van diverse programmeertalen ontwikkelen van Front-end software; Het begeleiden van het front-end team; Het oplossen van incidenten; Het bijhouden van een backlog; Je hebt een actieve bijdrage in de wekelijkse overleggen met de omliggende teams; Je houdt trends bij en adviseert het management hierover waar nodig; Helder communiceren met de stakeholders om hen zo mee te nemen in projecten en laten inzien wat de duur en toegevoegde waarde van bepaalde projecten is. Hier ga je werken Deze organisatie heeft circa 40 miljoen bezoekers per maand en heeft innovatie hoog in het vaandel staan. Het

Bekijk vacature »

Traineeship Fullstack developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Back end developer Digital agency

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 20 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

API Developer Red Hat Fuse

Dit ga je doen Als API Developer zal je verantwoordelijk zijn voor het: het maken van API's en het correct laten draaien van de API's op het platform. Hierdoor kom je in aanraking met Red Hat Fuse, Springt Boot, 3Scale, Red Hat SSO, Openshift en Azure DevOps; zorgen voor de kwaliteit van de ontwikkeling, integratie en prestaties van de API's; zorgen voor een stabiel integratieplatform. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap dat hoofdzakelijk op OpenShift, Azure en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een gewaardeerde werkgever in regio Oosterhout zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je brengt de aanpassingssuggesties van klanten in kaart, om

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »
Hans De Ridder

Hans De Ridder

23/03/2016 12:06:57
Quote Anchor link
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.
Gewijzigd op 23/03/2016 12:08:00 door Hans De Ridder
 
PHP hulp

PHP hulp

26/04/2024 09:50:16
 
Ward van der Put
Moderator

Ward van der Put

23/03/2016 12:45:43
Quote Anchor link
Waarop wil je filteren dan?

Je constateert alleen maar dat er van alles mogelijk is, maar zegt niet wat je nu precies wilt.
 
Thomas van den Heuvel

Thomas van den Heuvel

23/03/2016 15:10:16
Quote Anchor link
De vraag is te algemeen. Geef een concreet voorbeeld van wat je wilt bereiken, wat het resultaat is en wat je had verwacht. Het is onmogelijk om hierover een algemeen en allesomvattend advies te geven.

Het klinkt alsof je de functionaliteit die je gebruikt verkeerd toepast, niet begrijpt of beide.

En soms, heel soms, doet de functionaliteit niet wat deze zou moeten doen.
 
Hans De Ridder

Hans De Ridder

23/03/2016 15:30:56
Quote Anchor link
Ik wil voorkomen dat met typefouten of vergeten extensie een url toch door de 'keuring' komt.
Er mag uitsluitend iets uitrollen met de extensie (.nl, .org, .com...etc), zonder extra toevoegingen.
Dus http://www.regenboogjes.nl.... Of http://www.pctraverse.org....
Wanneer er typefouten staan in de 'http:/www.' dan is dat goed te checken.
Kan ook wel checken of er een laatste '.' staat, en of er nog wat achteraan komt.
Maar was in de veronderstelling dat dit gebeurde met de filtering.
Gewijzigd op 23/03/2016 15:32:36 door Hans De Ridder
 
Ivo P

Ivo P

23/03/2016 15:34:02
Quote Anchor link
maar HOE filter jij?

Geef een script van 3 of 4 regels als voorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$url
= 'http://regenboogjes.nl';

$b = filter_var(....);
?>
 
Hans De Ridder

Hans De Ridder

23/03/2016 19:02:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (!empty ($webs))
{

// Remove all illegal characters from a url
$webs = filter_var($webs, FILTER_SANITIZE_URL);


// Validate url
if (filter_var($webs, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === false) {
return "Verkeerde invoer Website";
}

$findme = "http://www.";
$pos = strpos($webs, $findme);
$posa = strpos($webs, '/', 8);

if (($posa  > 7) or ($pos > 0 ) or ($pos === false) or ($posa === true))
{
return "Verkeerde invoer Website";
}
}


Met het scriptje zorg ik dat er vanaf plek 1 (dus ook geen spatie)altijd moet staan 'http://www.'.
En ik kijk of er nog wat extra's bij staat (na de http://www.)dat begint met '/'.

Maar geen, of een verkeerde extensie, wordt een true.
En ik had verwacht dat het 'FILTER_FLAG_HOST_REQUIRED' wel voor de controle zou zorgen
of er een extensie aanwezig is.
 
Thomas van den Heuvel

Thomas van den Heuvel

23/03/2016 20:43:43
Quote Anchor link
FILTER_FLAG_HOST_REQUIRED bestaat volgens mij niet.

Daarnaast kan een URL naast het protocol http ook https of andere protocollen bevatten.

Verder ondersteunt filter_var() alleen standaard ASCII (iig geen domeinen buiten "latin") en laat deze mogelijk onveilige invoer door als ik de comments op php.net mag geloven.

Volgens mij heb ik dit al eerder aangegven, toen je deze vraag al eerder stelde, dat een goede manier om na te gaan of het een geldige website / webpagina betreft, het uitvoeren van een request is (bijvoorbeeld met cURL), en dan kijken of je een HTTP 200 statuscode terugkrijgt.

EDIT: en mogelijk kun je nog altijd terugvallen op handmatige moderatie en goedkeuring.
Gewijzigd op 23/03/2016 20:54:37 door Thomas van den Heuvel
 
Hans De Ridder

Hans De Ridder

23/03/2016 21:17:20
 
Thomas van den Heuvel

Thomas van den Heuvel

23/03/2016 23:14:36
Quote Anchor link
Dat is een artikel uit 2011, daarnaast, van php.net (user comment):
Quote:
Please note that FILTER_FLAG_HOST_REQUIRED and FILTER_FLAG_SCHEME_REQUIRED have disappeared. They were previously mentioned in the constants page but it seems that host and scheme are now required by default for the validate_url filter.

Is dus niet meer nodig om expliciet op te geven.
 
Ivo P

Ivo P

24/03/2016 09:54:20
Quote Anchor link
naast http:// bestaat er ook https://
Maar ook ftp:// kan, en de vraag is, of niet ook telnet, gopher etc zouden mogen.

Daarnaast veronderstel je dat de domeinnaam altijd met www. begint.
Is wat kort door de bocht, aangezien er ook zat sites zijn die dat achterwege laten, of er iets anders staat.
bijvoorbeeld m.telegraaf.nl, shop.buystuff.com

En om veel andere scripts vast af te keuren:
checken of de extensie uit 2 tot 6 karakters bestaat (.nl .com .info of .travel)
is ook verouderd, aangezien je er tegenwoordig zaken als .amsterdam of .restaurant mag verwachten)
 
Hans De Ridder

Hans De Ridder

24/03/2016 10:15:40
Quote Anchor link
Het gaat om opgave van een eigen artiestenwebsite in een registratieformulier, waar men dit kan opgeven.
In de praktijk zullen dat geen schokkende afwijkingen zijn.
Ik zal het zo maken nu dat er standaard een aantal extensies zijn toegestaan,
zoals .nl, .com, .org, .be. Dat geldt ook bij andere bijzonderheden.
Voor afwijkingen tov mijn toegestane invoer kan men dan contact opnemen met de de webbeheerder.
 
Ivo P

Ivo P

24/03/2016 10:38:04
Quote Anchor link
.nl .org etc is wel erg beperkt.

ik weet niet wat voor artiesten, maar .tattoo lijkt me ook iets voor een artiest

.pink en .blue voor schilders met voorkeur voor bepaalde kleuren
.pics .pictures .photographer

.ink voor drukwerk
.design

.guitars voor gitaristen

.actor .theater

.band .hiphop

zo maar een paar extensies vanaf: https://www.transip.nl/domeinnaam/
 
Hans De Ridder

Hans De Ridder

24/03/2016 13:05:24
Quote Anchor link
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.
 
Ivo P

Ivo P

24/03/2016 13:09:13
Quote Anchor link
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.
 
Ward van der Put
Moderator

Ward van der Put

24/03/2016 13:16:48
Quote Anchor link
Wáárom controleer je niet gewoon even of de URL bestaat?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function url_exists($url)
{

    if (!$fp = curl_init($url)) {
        return false;
    }
else {
        return true;
    }
}

?>
 
Hans De Ridder

Hans De Ridder

24/03/2016 13:31:40
Quote Anchor link
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.
Gewijzigd op 24/03/2016 13:40:37 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

24/03/2016 14:48:52
Quote Anchor link
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.

Toevoeging op 24/03/2016 20:27:42:

De code van Ward geeft een "false positive" voor de url http://www.nonexistent.com/.

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):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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;
}

?>

Aanroep:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$test
= 'http://www.nonexistent.com/';
if (isOnline($test)) { // levert "nope"
    echo 'yep';
}
else {
    echo 'nope';
}

?>
<hr /><?php
$test
= 'https://www.phphulp.nl/';
if (isOnline($test)) { // levert "yep"
    echo 'yep';
}
else {
    echo 'nope';
}

?>

thxcomeagain
Gewijzigd op 24/03/2016 14:51:53 door Thomas van den Heuvel
 
Hans De Ridder

Hans De Ridder

25/03/2016 14:53:35
Quote Anchor link
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
 
Ivo P

Ivo P

28/03/2016 13:56:26
Quote Anchor link
misschien heb je dan iets aan de functie http://php.net/manual/en/function.parse-url.php
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.