Avatar billede php_programmoer Nybegynder
27. januar 2006 - 19:33 Der 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
Avatar billede radion Nybegynder
27. januar 2006 - 19:42 #1
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
Avatar billede radion Nybegynder
27. januar 2006 - 19:53 #2
forresten så husk at for " og ' bliver påvirket af htmlentities skal du bruge ENT_QUOTES

altså
$variabel=htmlentities($variabel, ENT_QUOTES);
Avatar billede php_programmoer Nybegynder
27. januar 2006 - 20:00 #3
Jo tak, det var da brugbart :-)

flere bud er velkommne
Avatar billede radion Nybegynder
27. januar 2006 - 20:22 #4
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.
Avatar billede php_programmoer Nybegynder
27. januar 2006 - 20:30 #5
Det gør jeg allerede ;-)

Andre ting?
Avatar billede radion Nybegynder
27. januar 2006 - 20:37 #6
ikke lige umiddelbart.

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
Avatar billede php_programmoer Nybegynder
27. januar 2006 - 20:44 #7
Det er noteret!
Alle andre som kan komme med foreslag er velkommene
Avatar billede domaz.dk Novice
27. januar 2006 - 21:04 #8
må man se et eks. på javascript udgaven af MD5...?
Avatar billede php_programmoer Nybegynder
27. januar 2006 - 21:05 #9
Avatar billede radion Nybegynder
27. januar 2006 - 21:56 #10
Du kan muligvis også have glæde af http://phpsec.org/projects/guide/ de kommer grundigt ind på en masse forskellige måder at undgå sikkerhedsbrister
Avatar billede php_programmoer Nybegynder
27. januar 2006 - 22:50 #11
Det var da en helt vild god side! Den kan jeg virkelig bruge.

Holder spørgsmålet åbent endnu, sikkerhed er et vigtigt emne og der kan stadig komme gode svar.
Avatar billede php_programmoer Nybegynder
28. januar 2006 - 15:24 #12
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.

Og et svar tak :-)
Avatar billede radion Nybegynder
28. januar 2006 - 15:37 #13
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..

håber det kan bruges i en eller anden form :)
Avatar billede domaz.dk Novice
28. januar 2006 - 15:37 #14
du kan bl.a. holde en stram statistik over trafiken på din side ved at registrere alle ip/host og hvilken tid de var på hvilke sider o.s.v...
Avatar billede php_programmoer Nybegynder
28. januar 2006 - 21:34 #15
Det kan helt sikkert bruges, kan vi få et svar af dig radion ?
Avatar billede radion Nybegynder
29. januar 2006 - 05:11 #16
klart da :) håber du får bygget et sikkert site :)

godnat til alle :) ( eller godmorgen )
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel