![]() |
Hej gott folk!
Har en stor fråga: Jag hade planerat att starta en rewardsite och vill ha en hög säkerhet i filerna, Hur ska jag skydda filerna från hackers eller liknande (tex sQl-injections) Ngt mer än sql-injections? Tacksam för svar! MvH //Philip Andersson! |
Kontrollera all indata, se till så att användaren inte kan komma åt dina "core" filer direkt i webbläsaren. Exempel, placera följande högst upp i varje fil..
Kod:
if(!defined('OK')) die(); Lite mer: http://www.sitepoint.com/article/php-secur...urity-blunders/ |
addslashes();
htmlspecialchars(); Där har du några funktioner du bör ha koll på. |
Kod:
function secure($value) { if ($value) { return mysql_real_escape_string($value); } else return false; } |
Tack för dessa svaren!
Ska hålla god koll på dem! |
Jag tycker det är vettigt att kolla ALL indata. Ska ett id anropas med hjälp av $_GET? Kör då en enkel koll att värdet verkligen är numeriskt etc.
Kod:
if (isset($_GET['variabel'])){ Kod:
// En funktion att anvndas nr magic_quotes_gpc inte r satt. Fr att frhindra SQL-injections, eller i lidrigare fall MySQl-fel. Kod:
$_POST = db_escape($_POST); |
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__) { 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 |
SQL - injections är ju ganska klassiskt. Men det finns ju en del fler hål i att komma in igenom, t.ex. $_SERVER['PHP_SELF']; Med lite intelligenta URLS som man matar in så kan man få till vacker XSS.
MD5 är bra om någon annan kommer över din databas. NOT! Finns rainbowtables för det.. Men om du hittar på någon skum funktion typ md5(strreverse(md5($password))) så tar det lite längre tid att leta på vad det nu är för lösenord m.h.a. rainbow tables.. Eller om du använder blowfish och något bra salt. Att inkludera filer m.h.a. $_GET är också väldigt dumt. |
Man kan också lägga till en liten sökning på hela querysträngen, om den innehåller några fulingar som försök till sql-injections (or 1=1 t.ex) eller om den innehåller en adress (http|ftp) m.m. Om det hittas något så bara skicka iväg personen :P
Man kan enklast kolla sånt med ett reguljärt uttryck smidigast.. Ang lösenord så bör du spara det med kryptering plus ett salt.. =) Strippa också all indata på html.. om du behöver formattering så kör med bbcode istället. |
danjel > PDO är bra om man vill stödja flera olika databaser, tex. MySQL, MSSQL, Oracle mfl. Använder man bara MySQL och man har tillgång till PHP5 & MySQL 4.1 eller senare så är MySQLi ett starkt alternativ.
|
Alla tider är GMT +2. Klockan är nu 22:14. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson