Veiligheid: $_POST['...']

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Testen en valideren van de ontwikkelde software. Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je gaat aan de slag met diverse technologieën en frameworks. Denk hierbij aan C#, JS frameworks, HTML, CSS, TypeScript,

Bekijk vacature »

.NET developer

Functie Als .NET developer werk jij samen in een multidisciplinair ontwikkel team met 1-2 Senior .NET developers, twee front-end developers, Data Scientists en één UX designer. Als team werken jullie aan het ontwikkelen van een Cloud based applicatie en aan het stabieler maken van deze applicatie. Ook unit testing gaat erg belangrijk worden in jouw nieuwe functie. Samen met de Senior .NET ontwikkelaar wordt jij verantwoordelijk voor het ontwikkelen van de API. Jullie werken met veel data en incidenteel komen er ook data vraagstukken en zullen er wat queries gedraaid moeten worden. Dit betekend dat jij veel gaat werken met

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Junior Java Developer

Dit ga je doen Je ontwikkelt innovatieve, maatschappelijk belangrijke applicaties; Je implementeert nieuwe features; Je gaat in gesprek met eindgebruikers en designers om de applicaties continu te finetunen; Je draait mee in een professionele Agile/Scrum omgeving. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de omgeving van Amsterdam. Ze staan zeer goed bekend in de markt door hun innovatieve dienstverlening op IT gebied en hun gepassioneerde werknemers. Voor hun inspanningen op het gebied van IT hebben ze meerdere prijzen gewonnen! Onze klant is onderdeel van een Corporate werkgever en heeft zelf 300 mensen in dienst. Om

Bekijk vacature »

.NET Developer

Functieomschrijving Ben jij klaar voor de volgende stap in jouw carrière? Kom werken bij dit kleine softwarebureau en werk aan de gaafste maatwerk projecten. Je komt te werken in een klein development team en werk nauw samen met elkaar, om maatwerk software te leveren en bij te dragen aan bedrijfsautomatiseringen. Je gaat werken met de Microsoft stack en technieken als .NET, C#, Entity, MVC, SQL server. In de functie krijg je veel vrijheid om zelf beslissingen te nemen en je hebt impact op de bedrijfsprocessen. Bedrijfsprofiel Dit familiebedrijf bestaat al ruim 20 jaar. Zij hebben een vast netwerk van klanten,

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

Bekijk vacature »

Randstad B.V.- Freelance Senior Fullstack Develope

Startdatum: 01.05.2023 Richttarief: € 75,00 - €85,00 Duur van de opdracht: 1 jaar Uren per week: 40 Werkmodel: Hybride, dinsdag en donderdag aanwezig op kantoor in Diemen en meer wanneer dit nodig is. Functieomschrijving: De ideale kandidaat gaat onderdeel uitmaken van een junior team binnen het foundation domein. Vanuit het foundation domein werkt dit team samen met andere foundation teams en teams uit het online domein (professionals B2B en B2C) voor het bouwen en integreren van HRM functionaliteiten (verlof en benefits) in de persoonlijke portal van Interim Professionals. Er is meer backend werk dan frontend, maar kandidaat moet beiden leuk

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

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

19/04/2024 05:13:48
 
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.