API System
Sander de Vos op 03/02/2011 15:37:55:
Oke bedankt!
Maar hebben jullie ook nog ideeën voor de andere 'problemen'?
En is mijn clean_iput functie goed (genoeg).
Bevat hij onnodige dingen, of mist hij iets enz.
Alvast bedankt!
Maar hebben jullie ook nog ideeën voor de andere 'problemen'?
En is mijn clean_iput functie goed (genoeg).
Bevat hij onnodige dingen, of mist hij iets enz.
Alvast bedankt!
Dat hangt er van af waar je het tegen wil beveiligen en welke input je toe wilt laten. Stripslashes is overbodig in deze context en kan je problemen geven als je later weer addslashes moet toevoegen. Mysql_real_escape_string() is voldoende voor beveiliging tegen SQL injectie. Strip_tags heb je alleen nodig als je de data op wat voor manier output en je de gebruikers wil beschermen tegen mogelijke XSS aanvallen.
Om even terug te komen op het hele SHA/MD5 gebeuren terug te komen. MD5 is oud en moet niet meer gebruikt worden. Leesvoer: http://stackoverflow.com/questions/348109/is-double-hashing-a-password-less-secure-than-just-hashing-it-once en http://stackoverflow.com/questions/287517/encrypting-hashing-plain-text-passwords-in-database#287883
Quote:
Strip_tags heb je alleen nodig als je de data op wat voor manier output en je de gebruikers wil beschermen tegen mogelijke XSS aanvallen.
En wat is er mis met htmlspecialchars() ?
Ofwel kies je voor htmlspecialchars(), dan krijg je html tags te zien zoals je broncode ziet; ofwel strip je ze.
Dan is htmlspecialchars beter dan striptags. Met striptags kun je namelijk nog steeds (complexe) XSS-injecties uitvoeren, met htmlentities niet omdat alle tekens naar nutteloze entiteiten worden omgezet.
htmlspecialchars(striptags($mijn_tekst))
Wat striptags niet verwijdert, haalt htmlspecialchars dan alsnog weg.
Maar waarom zou je tags weg willen halen? Misschien wil de poster ze wel gebruiken om iets duidelijk te maken.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function clean_input($query) {
if(get_magic_quotes_gpc()) {
$query = stripslashes($query);
}
return mysql_real_escape_string($query);
}
?>
function clean_input($query) {
if(get_magic_quotes_gpc()) {
$query = stripslashes($query);
}
return mysql_real_escape_string($query);
}
?>
Nee, want je moet magic quotes uitzetten. En je moet data zo puur mogelijk in je database zetten. Je gaat hem pas bewerken op het moment dat je data uit je tabel haalt.
Dus alleen mysql_real_escape_string over een input is genoeg?
Ja, dat is voldoende. Alle andere functies, zoals htmlentities etc., pas je toe net voordat je de data als output gaat versturen...