Använd PDO för databas frågor, då blir det enklare att göra säkra frågor, du slipper addslashes motsvarande tex..utan använder prepared statements (eller vad det heter )
Fånga upp alla fel med set_error_handler() och visa en felsida då fel uppstår..hackers kan använda genererade fel för att få mer information om systemet
Logga felen i en fil som ligger utanför webbkatalogen. Om du inte kan spara loggen
utanför webbmappen, så kan man skriva in <?php exit; ?> för varje fel , då kan man inte surfa in till felloggen, se nedan för exempel..
Kod:
function error_handler ($type, $message, $file=__FILE__, $line=__LINE__) {
global $ERR;
if ($type == 8 || $ERR != '') return;
$err = "<?php exit; ?>"; //secure
$err .= date ("M d Y H:i:s"). "\n\nmess: " . $message ."\n\nfil: $file ";
$err .= "\n\ntyp: " . $type ."\n\nline: " . $line . "\n\n" .'phpfil: ' .$_SERVER['PHP_SELF'] ."\n\n";
$err .= "cookie: " .var_export($_COOKIE, true) ."\n\n";
$err .= "REFERER: " . $_SERVER['HTTP_REFERER'];
$err .= "\n----------------------- \n\n\n\n";
error_log($err, 3, REAL_PATH . 'log/'. date("Ymd"). '_err.php');
if(B_PROD && DEBUG == false){
ob_end_clean();
redir("scripts/error_page.php");
}else{
print nl2br("ERROR");
$ERR=$err;
}
}
if( ! defined("ERR_HANDLE_DISABLE")){
set_error_handler('error_handler');
}
Använd krypterade lösenord i databasen, obs att endast md5() hash inte är fullgott skydd.
Ha koll på Cross site scripting, XSS..
Använd inte <form action="<?php print $_SERVER['PHP_SELF']?>">, vilket öppnar för XSS attacker tex...
Ha koll på konfig filen med lösenord, så att den ej heter config..inc eller liknande utan .php , och gärna att den ligger utanför webbkatalogen