27. januar 2006 - 19:33Der er
15 kommentarer og 1 løsning
Hjælp til optimering af sikkerhed i php system
Jeg har lavet et system, og kunne godt tænke mig at optimere sikkerheden. Systemet indeholder kort sagt:
- Artikel system - Link system - Forum - Brugersystem - Karma system - Nyhedsystem
Når jeg siger at jeg vil optimere sikkerheden så mener jeg at jeg vil gøre systemet sikrere. Ligesom md5 gør et brugersystem mere sikkert, eller at man aldrig skal indsætte noget direkte med POST variabler, men det er bedre hvis man gør sådan her: $variabel = $_POST[variablen]
mysql_query(insert into blabla ($variabel) blabla)or die(mysql_error());
Jeg giver 5 point for hvert brugbart svar jeg får.
PS. jeg svare først på de indlæg der kommer ca. kl 20.00 - højest 5-10 minutter senere
til at starte med kan du jo checke dine brugerindtastede variabler ($variabel = $_POST[variablen]) om det er det rigtige format.
altså, hvis brugeren skal indtaste et tal, så brug is_numeric()til at checke om det nu kun er et tal der bliver indtastet
Hvis det også er tekst der skal indtastes, så check efter ' og " og lav dem om til html karaktererne evt. med HTMLENTITIES eller med en simpel str_replace
I forbindelse med dit forum skal du naturligvis også huske at bruge HTMLENTITIES så brugeren ikke får mulighed for at skrive html ( eller php ) koder der ødelægger dit design eller site.
for et mere sikker loginsystem kan du bruge en javascript version af MD5 så rentekst kodeordet ikke kan fanges over netværket med en pakkesniffer.
Ikke ud over at holde en stram logfil så du kan finde ud af hvem der smadrede noget, hvis det sker..
Desuden kan du jo ( det gør jeg ved et par sider ) lave IP adgang til admindelen, sådan at man skal sidde med en bestemt ekstern IP adresse for at få adgang til siden..
lidt i samme stil kan du gøre med at banne folk fra at logge ind, hvis de bruger forkert brugernavn / password 3 gange, så bliver de banned i 1 time el. lign. det er ret simpelt. sammen med deres brugernavn og password i databasen laver du en errorlogin der så tæller op fra 0 til 3 hver gang de fejler. og naturligvis bliver nulstillet når de logger rigtigt ind
Hej igen radion, du skrev før at jeg bør holde en stram logfil så jeg kan finde ud af hvem der smadrede noget, hvis det sker.. men hvordan laver man sådan en log fil? Jeg har søgt lidt, uden held.
hej igen. Det er op til dig selv om den logfil "bare" skal være en txt fil du gemmer i, eller en database.
Jeg bruger database, da jeg har nemmest ved at søge i den.
Men, det foregår simpelthen ved, at hver gang der sker noget på sitet.. log ind, log ud,oprettelse / sletning / redigering af ting, så skriver du til databasen ( eller filen) hvem, hvornår, hvorfra ( IP ), og hvad der bliver lavet. du sætter selv detaljegraden i og med du bestemmer om det skal være hver gang folk skriver i forumet, om det de skriver skal med, osv osv.
Jeg har selv brugt denne:
function logger($note,$navn=NULL){
if(!$navn){ $navn=$_SESSION['login_username']; }
$tidspunkt=time(); $ip=$_SERVER['REMOTE_ADDR']; $strsql="insert into log_actions(navn,tidspunkt,ip,note) values('$navn','$tidspunkt','$ip','$note')"; mysql_query($strsql);
}
Hvis en person har logget sig ind, og det har fejlet, så bruger jeg den: logger('Login failed.',$login_name);
hvis det lykkedes: logger('login Success');
den kan bruges til stort set alting, af hvad du har planlagt.her vil man også kunne se om en prøver bruteforce på passwords osv..
klart da :) håber du får bygget et sikkert site :)
godnat til alle :) ( eller godmorgen )
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.