Veiligheid: $_POST['...']

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

PHP Developer Symfony

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail. Hier ga je werken Als PHP Developer kom je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development teams welke ieder verantwoordelijk zijn voor hun 'eigen' klanten. Jouw team bestaat uit 6 backend

Bekijk vacature »

Senior Node.js developer Digital Agency

Functie Door de groei van de organisatie zijn ze op zoek naar een Tech Lead. Als tech lead ben jij verantwoordelijk Als Back end Node.js developer kom je terecht in een van de 8 multidisciplinaire teams in het projectenhuis. Afhankelijk van jouw interesses, wensen en capaciteiten word je bij projecten en onderwerpen naar keuze betrokken. Als ervaren ontwikkelaar zul jij vaak leiding nemen in de projecten en in het team een aanvoerder zijn van technische discussies. Uiteindelijk wil jij natuurlijk de klantwensen zo goed mogelijk vertalen naar robuuste code. De projecten kunnen varieren van langlopende- tot kleinschalige trajecten. Voorheen werkte

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

.NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. 50% van jullie werkzaamheden is maatwerk en de overige 50% is

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Ervaren PHP developer gezocht!

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

ERP Developer fleet managementsysteem

Wat ga je doen als ERP Developer fleet managementsysteem? Als ERP developer speel jij een belangrijke rol bij het doorvoeren van wijzigingen en verbeteringen binnen het fleet managementsysteem. Jouw expertise op het gebied van ERP systemen stelt jou in staat om de applicatie optimaal te laten functioneren en te blijven ontwikkelen. Als lid van het IT-team werk je nauw samen met andere developers en het business team om het fleet managementsysteem te integreren met andere systemen. Je bent verantwoordelijk voor het ontwikkelen van nieuwe functionaliteiten en het implementeren van verbeteringen op basis van de wensen en eisen van onze klanten.

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

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

26/04/2024 07:51:05
 
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.