Hej.
Jag håller på med en ny sajt och så kom jag på att tänka på säkerhet. Min server som jag kör sajten på har PHP 5.3. mina kod-block om säkerheten vet inte jag om den är helt onödig kod eftersom att PHP 5.3 har tagit bort register_globals?, eller gör någon nytta alls eller om jag borde ändra på koden på något vis?
Detta är en del av min kod; (har tagit bort kod som inte innefattar de ja frågar om samt kommentar-block)
<?php
class init
{
function add_magic_quotes($array) {
foreach ($array as $k => $v) {
if (is_array($v)) {
$array[$k] = add_magic_quotes($v);
} else {
$array[$k] = addslashes($v);
}
}
return $array;
}
Alttså... PHP-teamet tog bort magic quotes eftersom det var ett dumt sätt att lösa problemet på. Istället för att emulera magic quotes bör du göra rätt, dvs escapa vid varje databas-fråga. Ännu bättre är att använda mysqli-interfacet och prepared statements, som i princip helt eliminerar risken att råka ut för SQL-injektioner..
Magic quotes saniterar bara data som inkommer via formulär. Ponera att du någonstans har en sträng som hämtas ut från databasen och sedan stoppas in i en annan SQL-fråga. Den strängen kommer ju inte att saniteras eftersom den inte inkom via ett formulär.
Istället för mysqli bör du kolla på PDO och dess prepared statements, det är mer generiskt och samma php-kod kan användas om du skulle behöva byta databas. http://php.net/manual/en/book.pdo.php
Om något bör du kolla om magic_quotes är påslaget och rensa bort slasharna.
Sök även efter pdo här på wF så får du upp lite intressanta träffar.
Japp..
Jag har bara utvecklat php i några år, så jag kan inte hela php-manualen^^, men försöker granska och använda mig av de bästa lösningarna php5 erbjuder :P.. Bäst att fråga innan, så lär man sig om man gör fel.
262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849