Veiligheid: $_POST['...']

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Senior Developer ERP Dynamics 365

Samengevat: Deze werkgever is een softwarebedrijf. Ben jij een enthousiaste developer? Heb je ervaring met ERP of Dynamic 365 bussines central? Vaste baan: ERP Applicatie Specialist ERP MBO €3.600 - €5.200 Wij houden ons als bedrijf bezig met het leveren en implementeren van het Microsoft Dynamics pakket binnen verschillende industriële sectoren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Binnen ons open team is er een no-nonsense cultuur. Daarnaast is er veel onderling contact door de korte communicatielijnen. Het team werkt enthousiast samen om een

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Front end developer binnen de consultancy

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een ontwikkelteam met 15 developers en twee testers. Samen zijn jullie verantwoordelijk voor financiële applicaties met meer dan 50.000 gebruikers. Een deel van het team is verantwoordelijk voor de webapplicaties van deze organisatie. Ook zijn er twee app ontwikkelaars werkzaam in het team die zich focussen op de mobiele applicatie. Als .NET ontwikkelaar ga jij aan de slag met de webapplicaties van deze organisatie. Hierbij maak jij o.a. gebruik van C# .NET, ASP.NET, T-SQL, Angular en TypeScript. De nadruk van jouw functie ligt wel op de backend van de applicatie. Wat jouw functie

Bekijk vacature »

Java Developer

Functie Wat ga je doen als Java developer? Jij komt terecht binnen een informeel team waarin je verantwoordelijk bent voor de backend systemen voor grote klanten als Ziggo en KPN. Als Medior Java developer werk je in teamverband en soms individueel. Gedurende de werkweek zal je veelvuldig sparren met je collega’s voor een goede implementatie van de software. Ben jij een echte Java developer? Ben je geïnteresseerd in de nieuwste technieken en de laatste ontwikkelingen? Dan ben je hier aan het juiste adres! Eisen Wat wordt er van jou verwacht? • Minimaal HBO/WO denk- en werkniveau; • Analytisch sterk, open

Bekijk vacature »

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

Mendix Developer

Voor Troostwijk Groep zoeken wij een: Mendix Developer Wij zoeken Je bent een getalenteerde en ervaren Mendix Developer en het is tijd om je horizon te verbreden. Je wilt minder coderen en meer modelleren, minder bezig zijn met allerlei technische details en randvoorwaarden en meer met functionaliteit. Daarnaast ben je trots op de innovatieve en gebruiksvriendelijke applicaties die je in de loop van de jaren hebt gebouwd. Werk je graag in een enthousiast team, wil je veel vrijheid en kun je tegelijkertijd goed met deadlines omgaan, dan ben jij absoluut degene die wij zoeken! Wat je nodig hebt is ruime

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

Pagina: 1 2 volgende »

Sure Is

Sure Is

20/06/2011 13:26:04
Quote Anchor link
Hallo iedereen!
Ik gebruik in mijn script vaak $_POST['...'] om dingen van form in de database op te slaan.
Nu besef ik net dat, als iemand een eigen php-script maakt met daarop een form, hij de gegevens kan manipuleren.

Een voorbeeld:

Mijn code: add.php
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php $sql="INSERT INTO table (naam, plaats)
VALUES
('$_POST[myname]','$_POST[myplace]')"
; ?>

<form action="add.php" method="post">
<input type="hidden" name="myname" value=$usernaam>
<input type="hidden" name="myplace" value=$userplaats>
<input type="submit" value="Bewaar"></form>


Op het eerste zicht heeft de gebruiker geen optie om zelf de waarde van de naam en plaats te bepalen.
Maar als hij zelf een script runt, bv. dit:

Quote:
<form action="http://www.mijnwebsite.com/add.php" method="post">
<input type="hidden" name="myname" value="fake naam">
<input type="hidden" name="myplace" value="fake plaats">
<input type="submit" value="Bewaar"></form>


Dan zal mijn script daar niks mis zien, en die valse waarden in de table zetten. Dat mag natuurlijk niet!

Mijn vraag: hoe kan ik dit oplossen? Is $_POST['...'] een slechte manier om gegevens in een database te zetten?

Bedankt!
Gewijzigd op 20/06/2011 13:27:38 door Sure Is
 
PHP hulp

PHP hulp

21/11/2024 17:10:10
 
Johnno janssen

johnno janssen

20/06/2011 13:34:15
Quote Anchor link
je zou het script kunnen runnen via $_server['request_method']
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<? If ($_server['request_method']=="POST"){
}

?>


En dan haal je form action weg
Gewijzigd op 20/06/2011 13:35:46 door johnno janssen
 
TJVB tvb

TJVB tvb

20/06/2011 13:43:03
Quote Anchor link
@Johnno, jouw methode is goed maar helpt niet bij het probleem van Sure IS

@Sure Is, je moet de gegevens controleren en escapen voordat je het de databse in stopt.
Ook is het gebruik van hidden fiels om data door te geven altijd gevaarlijk. Je kunt ook sessie gebruiken.
 
Rolf -

Rolf -

20/06/2011 13:46:41
Quote Anchor link
Zo heb ik er nog nooit over nagedacht. Wat is dan inderdaad de veiligste oplossing?

@TJVB, er is toch ook een functie in je php.ini dat je kan blokkeren dat als er iets van een andere site komt, dit geblokkeerd wordt?
 
TJVB tvb

TJVB tvb

20/06/2011 13:54:41
Quote Anchor link
@Rolf, je moet je values escapen met (bij mysql) mysql_real_escape_string.
Die $username en $userpage komen ook ergens vandaan. (De manier hierboven klopt ook niet, je moet de variabelen buiten je html houden.)
 
Sure Is

Sure Is

20/06/2011 13:58:55
Quote Anchor link
Ik heb het nu zo:

Quote:
$naam1 = $_POST['myname'];

if(get_magic_quotes_gpc())
{
$naam1= stripslashes($naam1);

}
if($_POST['myname']!='')
{
$naam = mysql_real_escape_string($naam1);


$sql='INSERT INTO table (naam)
VALUES
("'.$naam.'")';
}


Maar probleem nog steeds niet opgelost...
Gewijzigd op 20/06/2011 13:59:15 door Sure Is
 
Mebus  Hackintosh

Mebus Hackintosh

20/06/2011 14:01:42
Quote Anchor link
@Sure Is, mysql_real_escape_string zou voldoende moeten zijn.
 
Sure Is

Sure Is

20/06/2011 14:01:59
Quote Anchor link
TJVB tvb op 20/06/2011 13:54:41:
Die $username en $userpage komen ook ergens vandaan. (De manier hierboven klopt ook niet, je moet de variabelen buiten je html houden.)

Off-topic: Sorry, beetje snel geweest bij overtypen :) , maar daar zit nu het probleem niet.



Toevoeging op 20/06/2011 14:03:05:

Mebus vg op 20/06/2011 14:01:42:
@Sure Is, mysql_real_escape_string zou voldoende moeten zijn.

Ik heb dit geprobeerd (zie code hierboven) maar een extern script kan nog steeds de gegevens manipuleren...
 
Rolf -

Rolf -

20/06/2011 14:03:39
Quote Anchor link
Mysql_real_escape_string zorgt er toch alleen voor dat er geen mysql-injection plaats kan vinden.

Als iemand vanaf zijn eigen site een script runt voor jouw formulier, kan hij op die manier toch ook b.v. captcha omzeilen?
 
- SanThe -

- SanThe -

20/06/2011 14:06:30
Quote Anchor link
Rolf van der Horst op 20/06/2011 14:03:39:
Als iemand vanaf zijn eigen site een script runt voor jouw formulier, kan hij op die manier toch ook b.v. captcha omzeilen?


Nee, daar wordt toch op gecontroleerd neem ik aan.
 
Sure Is

Sure Is

20/06/2011 14:08:17
Quote Anchor link
- SanThe - op 20/06/2011 14:06:30:
Rolf van der Horst op 20/06/2011 14:03:39:
Als iemand vanaf zijn eigen site een script runt voor jouw formulier, kan hij op die manier toch ook b.v. captcha omzeilen?


Nee, daar wordt toch op gecontroleerd neem ik aan.

Mijn script is wat ik gepost heb, dus ik denk niet dat ik hier op gecontroleerd heb... misschien is dat het probleem? Hoe doe ik dit?
 
Rolf -

Rolf -

20/06/2011 14:13:49
Quote Anchor link
Waarschijnlijk controleren dat er niet steeds vanaf hetzelfde ip een request komt
 
Sure Is

Sure Is

20/06/2011 14:22:16
Quote Anchor link
Ik vind het vooral raar dat ik dit nog niet ben tegen gekomen.
Bijna alle scripts die ik tegen kom zou je dan vrij eenvoudig kunnen manipuleren: even de source code checken, de form-data kopiëren, value's invullen naar wens, runnen op eigen server, et voila...!

(Voor de duidelijkheid: het gaat hier niet om geautomatiseerde spam-scripts (want die kan je omzeilen met een captcha) maar wel om scripts die er op uit zijn eigen gekozen values in de database te stoppen.)

Wat zie ik over het hoofd...? Het kan toch niet dat al die scripts zo onveilig zouden zijn?
 
Mebus  Hackintosh

Mebus Hackintosh

20/06/2011 14:25:45
Quote Anchor link
Ligt eraan welke php functies je gebruikt.. Als je met includes werkt en als deze afhankelijk zijn van een GET of POST waarden moet je deze goed controleren inderdaad.. Maar als ik zo kijk naar je script is het met gebruik van mysql_real_escape_string gewoon veilig.
 
Bram Boos

Bram Boos

20/06/2011 14:26:56
Quote Anchor link
Ik vraag me af waarom je hidden fields gebruikt?
 
Sure Is

Sure Is

20/06/2011 14:29:49
Quote Anchor link
Mebus vg op 20/06/2011 14:25:45:
Maar als ik zo kijk naar je script is het met gebruik van mysql_real_escape_string gewoon veilig.

Dat dacht ik ook, alleen heb ik het echte script eens op mijn website upgeload (eigendom van one.com), en het fake-script gerunt via mijn pc (via xampp) , en ik kan nog steeds via dat fake-script value's in mijn database droppen...
 
Bram Boos

Bram Boos

20/06/2011 14:32:04
Quote Anchor link
Zou je anders eens je volledige code willen posten van add.php?
 
Sure Is

Sure Is

20/06/2011 14:54:42
Quote Anchor link
add.php
Quote:
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
<?php
include('config.php');

$naam1 = $_POST['myname'];

    if(get_magic_quotes_gpc())
    {

        $naam1= stripslashes($naam1);
        
    }

if($_POST['myname']!='')
    {

        $naam = mysql_real_escape_string($naam1);


            $sql='INSERT INTO table (naam)
            VALUES
            ("'
.$naam.'")';
    }

    
?>


form.php (of deze code kan even goed bij add.php nog staan, maakt niet uit)
Quote:
<form action="add.php" method="post">
<input type="hidden" name="myname" value=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $usernaam; ?>
>
<input type="submit" value="Bewaar"></form>


Code is nog niet af, die $username moet nog bepaald worden, maar dat is niet zo belangrijk. Het gaat er mij gewoon om dat die value gemakkelijk kan veranderd worden met een extern script.

Het externe/fake/bedrogplegend script zou dan dit kunnen zijn:
bedrog.php
Quote:
<form action="http://www.mijnwebsite.com/add.php" method="post">
<input type="hidden" name="myname" value="Deze value bepaalt de bedrogpleger zelf">
<input type="submit" value="Bewaar"></form>


Als je dit bedrogplegend script runt op een andere server dan waarop http://www.mijnwebsite.com/add.php runt, post die alsnog die valse value's in de database van mijnwebsite.

(Het waarom van dit script is misschien een beetje raar, maar die hidden value's moeten uiteindelijk scores worden dat mensen behaalt hebben in een spel. Via het bedrogplegend script zou je zo je score kunnen manipuleren en omhoog trekken.)

Toevoeging op 20/06/2011 15:55:53:

Je kan dit door SESSION te gebruiken wel oplossen,
bv zo:

Quote:
$sql='INSERT INTO table (naam)
VALUES
("'.$_SESSION['naam'].'")';


en eerder die naam al in die session te steken.

Maar dat lijkt mij zo omslachtig? Of is dit echt wel dé manier om dit te voorkomen? Ik ben geen php-pro, maar het lijkt mij niet ondenkbaar om alsnog een extern script te schrijven dat die session kan beïnvloeden ofzo... maar ja.
Gewijzigd op 20/06/2011 15:01:37 door Sure Is
 
Danny van der Jagt

Danny van der Jagt

20/06/2011 18:35:06
Quote Anchor link
Hee,

Ik denk dat je voor die scores gewoon het beste session kan gaan gebruiken. Deze zijn (volgens mij) niet aan te passen van buiten jouw server om. En andere manier zou nog kunnen zijn om alles direct in je database te zetten(als je die gebruikt).

Maar even over die $_POST[], ik denk dat het slim is als je alleen aanpassingen van binnen uit je host/server toe laat. Ik ben er nog niet helemaal uit maar als je $_SERVER["SERVER_ADDR"] mee kan sturen met het form zonder dat ze de uitkomst van $_SERVER["SERVER_ADDR"] kunnen zien in je bron code zou het veilig moeten zijn. Deze ip kan je dan in je functie/class als eerste laten controleren met die van je eigen server/host. En dan alleen de rest van je script uit laten voeren als deze klopt. Ik heb het één en ander geprobeerd maar ik krijg alleen die $_SERVER["SERVER_ADDR"] niet tegelijk met het form ongezien verstuurd. Miscchien iemand een idee??
 
Sure Is

Sure Is

02/07/2011 13:23:34
Quote Anchor link
+1! Ik wil ook wel weten hoe je ervoor kan zorgen dat enkel dingen vanop het eigen ip toegelaten worden...
 
Gerhard l

gerhard l

02/07/2011 18:02:18
Quote Anchor link
Maar wat is je probleem? Je controleert je input toch nadat een formulier gepost is, dus uiteindelijk maakt het niet uit of ze van een andere site komen. En iemand zei captcha omzeilen, dit kan natuurlijk niet eh? Je maakt je captcha aan op het moment dat het formulier opent, en die wordt gecontroleerd nadat het is gepost, dus als je dan van een andere site komt is je captcha leeg en moet je hem altijd terug sturen lijkt mij..
 

Pagina: 1 2 volgende »



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.