[discussie-topic] Input- en output in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bram Boos

Bram Boos

27/02/2011 20:56:18
Quote Anchor link
Naar aanleiding van een terugkomend probleem en discussie hebben we hier het discussietopic "Input- en output in PHP".

Zoals de titel al zegt gaan we hier (hopelijk) een leuke discussie starten over het uitspugen en inslikken van gebruikers-data.

Bekende vormen zijn voor het filteren van data zijn: mysql_real_escape_string() & htmlspecialchars() maar welke gebruik jij allemaal om je site veilig te laten draaien zonder dat de gebruiker er iets van merkt?
Gewijzigd op 27/02/2011 21:00:40 door Bram Boos
 
PHP hulp

PHP hulp

21/11/2024 12:57:41
 
Jasper DS

Jasper DS

27/02/2011 20:58:49
Quote Anchor link
alles wat naar de database gaat gooi ik een mysql_real_escape_string() over
 

27/02/2011 21:08:20
Quote Anchor link
Volgens mij staat er op de volgende links genoeg info:
faq.using
faq.html
security.variables
 
Jordi Kroon

Jordi Kroon

27/02/2011 21:20:19
Quote Anchor link
Er zijn forums die een php catagorie hebben waarvan de posts met htmlspecialchars beveiligd
XD
 
Jasper DS

Jasper DS

27/02/2011 21:21:24
Quote Anchor link
karl, Bram Boos wilt een discussie houden.. Geen probleem lijkt mij? Wat is er, heb je een slechte dag gehad? wil je erover praten? Afbeelding
Gewijzigd op 27/02/2011 21:22:26 door Jasper DS
 
Bram Boos

Bram Boos

27/02/2011 21:35:38
Quote Anchor link
Eigenlijk is de preciese reden van dit topic de volgende #fail:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4

Het waren er nog meer maar ik weet het (gelukkig) niet meer...
Gewijzigd op 27/02/2011 21:39:24 door Bram Boos
 
Pim -

Pim -

27/02/2011 21:43:24
Quote Anchor link
XHP, best grappig

Iets nuttiger is een template engine als twig die automatisch output escaped.
 

27/02/2011 21:49:31
Quote Anchor link
PHP Jasper op 27/02/2011 21:21:24:
karl, Bram Boos wilt een discussie houden.. Geen probleem lijkt mij? Wat is er, heb je een slechte dag gehad? wil je erover praten? Afbeelding

Ben jij Bram Boos? Volgens mij niet. Mijn mening op zijn (te) algemene stelling is toevallig gewoon op php.net te vinden.
 
Jasper DS

Jasper DS

27/02/2011 21:53:03
Quote Anchor link
lees je even karl?

Bram Boos op 27/02/2011 20:56:18:
Zoals de titel al zegt gaan we hier (hopelijk) een leuke discussie starten over het uitspugen en inslikken van gebruikers-data.


Hij wilt hier over discussiëren met ons.
 

27/02/2011 21:56:04
Quote Anchor link
Karl Karl op 27/02/2011 21:49:31:
PHP Jasper op 27/02/2011 21:53:03:
lees je even karl?

Bram Boos op 27/02/2011 20:56:18:
Zoals de titel al zegt gaan we hier (hopelijk) een leuke discussie starten over het uitspugen en inslikken van gebruikers-data.


Hij wilt hier over discussiëren met ons.

Zou je misschien zelf willen lezen:
PHP Jasper op 27/02/2011 21:21:24:
karl, Bram Boos wilt een discussie houden.. Geen probleem lijkt mij? Wat is er, heb je een slechte dag gehad? wil je erover praten? Afbeelding

Ben jij Bram Boos? Volgens mij niet. Mijn mening op zijn (te) algemene stelling is toevallig gewoon op php.net te vinden.

En:
Bram Boos op 27/02/2011 20:56:18:
(...)
Bekende vormen zijn voor het filteren van data zijn: mysql_real_escape_string() & htmlspecialchars() maar welke gebruik jij allemaal om je site veilig te laten draaien zonder dat de gebruiker er iets van merkt?


Verder ben jij volgens mij nog steeds geen Bram Boos of wel?
Gewijzigd op 27/02/2011 21:56:40 door
 
Noppes Homeland

Noppes Homeland

27/02/2011 22:01:59
Quote Anchor link
Er valt niets te discuseren.

Data veilig de database in doe je met _real_escape_string (*1), alle andere functies zijn niet van toepassing, deze komen pas aan bod als je de gegevens gaat tonen.

*1 of je gebruikt PDO/MysqlI met bind variabelen, dan zit je kwa veilig gegevens opslaan ook goed.
 

27/02/2011 22:35:10
Quote Anchor link
Noppes, je vergeet dat je ook naar int kunt typecasten.
 
Jordi Kroon

Jordi Kroon

27/02/2011 22:39:59
Quote Anchor link
Pim - op 27/02/2011 21:43:24:
XHP, best grappig

(..)


Wat is het verschil ervan behalve dat de quotes bij de echo weg zijn
 
Bram Boos

Bram Boos

27/02/2011 22:52:00
Quote Anchor link
Ik weet toevallig dat Prestashop, OScommerce en Wordpress ook van XHP gebruikmaken. Of het echt sneller is en of het echt veel nut heeft weet ik niet..
 
Wouter J

Wouter J

27/02/2011 22:57:21
Quote Anchor link
@karl, zucht. Is er nou geen 1 topic, geen 1 persoon, geen 1 ding waar jij niet negatief op reageert?
 

27/02/2011 23:01:06
Quote Anchor link
Wouter J op 27/02/2011 22:57:21:
@karl, zucht. Is er nou geen 1 topic, geen 1 persoon, geen 1 ding waar jij niet negatief op reageert?


Dus dan gaan we maar op de man spelen?
 
Kris Peeters

Kris Peeters

28/02/2011 11:06:54
Quote Anchor link
Nochtans is Karl's post van 27/02/2011 22:35:10 volledig juist.

Als jij een integer of float verwacht als data, zie dan dat je die post type cast.
escapen is dan absoluut niet nodig.

Ook bv. niet wanneer je een paswoord met md5 codeert (md5 geeft een string terug die nooit problemen kan geven voor injectie).

Je kan zeggen: beter een keer te veel escapen dan te weinig.
Wel ... beter genoeg dan te veel.

------

O ja, nu we toch bezig zijn.
sprintf()

(Ja, de c(++ / #) mens in mij komt even naar boven)

Dit is een functie die ideaal is om sql strings op te bouwen.
Het doet wat denken aan prepared statements. In je sql vertel je welk formaat het veld moet hebben; de waardes zelf hou je buiten de string, als extra parameters. Als dat numeriek is, wordt het automatisch gecast.
Je kan ook heel gemakkelijk afronden op een bepaald aantal cijfers na de komma; je kan leading zero's regelen (ideaal om datetime strings te bouwen); ...

Een voorbeeld
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
// uiteraard zou normaal $_POST uit gegevens van een gepost formulier komen.
$_POST = array(
    'meetresultaat' => 13.56,
    'opmerking' => 'Niets op te merken',
    'id' => 17,
);

$sql = sprintf("
  UPDATE metingen
  SET
    meetresultaat = %f,
    opmerking = '%s'
  WHERE id = %d
  LIMIT 1
  "

  , $_POST['meetresultaat']  // wordt automatisch gecast naar float
  , mysql_real_escape_string($_POST['opmerking'])  
  ,
$_POST['id']  // wordt automatisch gecast naar int
);
echo '<pre>'. $sql .'</pre>';
?>
Gewijzigd op 28/02/2011 12:45:23 door Kris Peeters
 
Bram Boos

Bram Boos

01/03/2011 15:22:32
Quote Anchor link
Het was niet echt de bedoeling om te vragen hoe maar meer om jullie meningen en of jullie nog extra (zelfgemaakte) functies gebruiken voor het filteren van data...
 
Pim -

Pim -

01/03/2011 17:49:10
Quote Anchor link
Jordi kroon op 27/02/2011 22:39:59:
Pim - op 27/02/2011 21:43:24:
XHP, best grappig

(..)


Wat is het verschil ervan behalve dat de quotes bij de echo weg zijn



Automatische output escaping. Verder is het technisch gezien natuurlijk heel interessant.
 



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.