Frågor och svar

Tillbaka
Sökord:  

Vad bör jag tänka på för att undvika att någon hackar min sida?
  1. Uppdaterad programvara
  2. Filrättigheter
  3. Tillgång till filer
  4. CGI- och PHP-program
  5. Exempel
  6. Mer om websäkerhet
  7. Lösenord

Uppdaterad programvara

Kriminella är alltid på jakt efter gamla versioner av programvara, versioner med välkända säkerhetshål. Dom använder sökmotorer som Google, MSN Live Search och Yahoo till att hitta websidor med t.ex. Gallery, Joomla, PhpMyAdmin, WordPress o.l. Därefter kör dom helautomatiserade angrepp mot dom kända säkerhetshålen. Om du har en gammal version av sådan programvara, så kan ditt webhotell vara utsatt för stor risk!

Ditt viktigaste försvar mot skador på dina websidor är därför: använd nyaste tillgängliga version av programvaran du har installerat!

Om du inte längre använder programvaran, eller om programvaran inte finns i en säker version, så måste du radera den från webhotellet. Det är inte tillräckligt att ta bort länken från din websida.

Merparten programvaraleverantörer har nyhetsbrev för säkerhetsuppgraderingar. Välj att motta dessa, så är du uppdaterad!


Filrättigheter

Det viktigaste som du måste tänka på för att undvika att någon obehörig ändrar eller raderar något på ditt webhotell, är att alla filrättigheter är definerade på rätt sätt. Då är du säker på att inga andra kan ändra filer som är dina eller få tag i dina lösenord.


Tillgång till filer

En annan sak som du borde tänka på är att endast filer som måste vara tillgängliga för webservern är tillgängliga. Om ditt hemområde är /home/1/m/mittnamn, så bör du lägga alla dina websidor i en underkatalog (till exempel /home/1/m/mittnamn/www), medans konfigurationsfiler, include-filer, filer som innehåller användarnamn och lösenord eller annan sensitiv information ligger i en annan underkatalog (till exempel /home/1/m/mittnamn/conf). På det sättet undgår du att dom filerna blir tillgängliga via webservern.


PHP- och CGI-program

Om du har PHP-skript eller CGI-skript, så bör du dessutom se till att alla input-parametrar till skripten valideras ordentligt innan dom används. Annars så kan du riskera att ondsinnade besökare medvetet skickar med felaktiga parametrar för att försöka lura dina skript till att göra andra saker än det dom är programmerade till, till exempel att köra arbiträra kommandon på webservern.


Exempel

Här är ett exempel på hur det INTE skall göras i ett PHP-skript:

<?php
...
$inc = ($_REQUEST["inc"]);
include "$inc";
...
?>

Här utförs innehållet av $inc okritiskt utan att undersöka vad variabeln innehåller, då kan vem som helst använda skriptet t.ex. till att hämta ut innehållet i /etc/passwd, dina PHP-filer (inkluderat databas lösenord) eller utföra villkorliga kommandon på webservern med rättigheterna. Detta är skadligt både för dig och för andra användare av den samma webservern

Tryggt exempel

Här är ett exempel på hur du kan placera PHP-includes i en underkatalog "includes", och se så att det frågas efter en existerande fil på ett tryggt sätt.

<?php

$page=$_REQUEST["page"];

if (!preg_match("#\.\./#",$page) AND 
preg_match("#^[-a-z0-9_.]+$#i",$page) AND
  file_exists("includes/$page") ) {
    include("includes/$page");
} else {
  print "Invalid page requested. The attempt has been logged.";
  # Här kan du lägga in en rutin som   loggar försöket på att gå runt ditt system.
}
?>

Generellt sätt så bör du alltid vara noga med att kontrollera input-parametrar till skriptet, speciellt om parametrarna används i systemkall eller i SQL-frågor. Kom också ihåg att data som kommer ifrån andra system (inkluderat databaser) också bör kontrolleras.


Mer om websäkerhet

Om du vill lära mer om säkerhet i förbindelse med webprogrammering, så kan vi rekomendera Innocent Code av Sverre H. Huseby (ISBN 0-470-85744-7).


Lösenord

Var noga och försiktig med hur du behandlar dina lösenord.


Se även:

© 2024 Domeneshop AS · Om oss · Villkor · Dataskydd