Bye@ Register_globals, magic_quotes, mysql_query()

Register globals
Register_globals zullen in PHP 6 niet meer bestaan, ook niet optioneel in te stellen. Dus je zult altijd superglobals moeten gebruiken (zie mijn tutorial over superglobals). Ook de HTTP_GET_VARS- en HTTP_POST_VARS-varianten vervallen.

Eureka! Dit vergroot de veiligheid met een grote factor, omdat brakke PHP scripts gewoon niet meer gerund kunnen worden.

BELANGRIJK: MAGIC QUOTES
Ook magic quotes zullen volledig vervallen. Voor de meeste programmeurs op PHPhulp zal dit een probleem vormen. Men is gewend dat waarden uit $_GET en $_POST automatisch geëscaped zijn. Dit zal niet meer het geval zijn. Voor professionals zoals ik is dit een grote opluchting. Ook bevordert dit de veiligheid, omdat iedereen er nu actief op moet gaan letten.

Voorbeeld, DIT KAN STRAKS ECHT NIET MEER:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$sql
= "
    SELECT
     *
    FROM
      tabel
    WHERE
      veld = '"
. $_POST['naam'] . "'
"
;
$query = mysql_query($sql);
?>


De waarde van $_POST['naam'] zal namelijk niet meer geëscaped worden, dus is SQL injection zo mogelijk. Je moet dit voortaan zelf beveiligen. Vroeger zou bijvoorbeeld de string pizza's worden omgezet naar pizza\'s. NU NIET MEER. Nu levert het een dikke error op omdat pizza's je query verpest vanwege het aanhalingsteken.

mysql_query() waarschijnlijk weg
Dat beveiligen doe je met PDO (tutorial). De gewone database-functies als mysql_query() zijn waarschijnlijk namelijk ook standaard uit PHP 6 gesloopt maar zijn via extensies nog te krijgen (hier moet nog een definitieve beslissing over gemaakt worden). PDO blijft de enige standaard voor verschillende databases. Met PDO kun je o.a. prepared statements gebruiken en zo netjes je scripts beveiligen. Hier staan genoeg tutorials over op PHPhulp.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_query();
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Call to undefined function mysql_query() in C:\server\www6\mysql.php on line 2

Hetzelfde geldt voor mysqli_*, maar alles onder voorbehoud.


Safe mode
Ook safe mode zal niet meer beschikbaar zijn. Niet echt interessant voor ons programmeurs denk ik.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Installatie PHP 6 naast PHP 5
  2. Inleiding
  3. Bye@ Register_globals, magic_quotes, mysql_query()
  4. Namespaces (vanaf PHP 5.3)
  5. Label en goto
  6. Verkorte ifsetor() (vanaf PHP 5.3)
  7. Static keyword (vanaf PHP 5.3?)

PHP tutorial opties

 
 

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.