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:
2
3
4
5
6
7
8
9
10
11
$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.
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.
Inhoudsopgave
- Installatie PHP 6 naast PHP 5
- Inleiding
- Bye@ Register_globals, magic_quotes, mysql_query()
- Namespaces (vanaf PHP 5.3)
- Label en goto
- Verkorte ifsetor() (vanaf PHP 5.3)
- Static keyword (vanaf PHP 5.3?)