Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 843
Limited edition
Moff's Avatar
Jeg har nå omsider fått smakt en del på PHP og føler trang til å bruke det jeg har lært. Derfor har jeg sammen med noen kompiser lagt en plan for å bygge et bittelite nettverk à la nettby og de der. Brukerprofiler, bildegalleri og masse unyttige funksjoner som vi gjerne skulle sett hos de andre aktørene. Så før jeg gyver løs på dette prosjektet så bør jeg kanskje få mere informasjon om typiske sikkerhetshull.
Hvilke svakheter har for eksempel et filopplastingssystem (bortsett fra det opplagte)? Finnes det teknikker for å trikse med passordhasher som sendes fra forms til sjekking (MD5)? Hvordan stopper man bruteforce på en enkel måte?
Jeg har allerede lest om anti-bot-systemer, retrive-password-funksjoner og smått at man aldri skal la brukeren kunne endre viktige og uheldige variabler som han vil. Ang. sistenevnte: Finnes det noen injectionteknikker for å endre hidden-variabler i forms (jeg er usikker på om jeg tror at javascript kan fikse dette...)? Litt løst og ukonkret, men hvis noen jobber med sikkerhet og sånt på lignende sider (jeg vet at noen her på bruket står bak Nordic Mafia i alle fall) så har jeg veldig lyst til å få noen tips om slike opplagte exploits man legger igjen. Nå har jeg jo ikke tenkt å åpne dette prosjektet for andre enn folk jeg kjenner fra før, så for meg er det ikke noen stor krise om det blir tull. Dette er egentlig for læringen, øvingen og underholdningens del.
Trigonoceps occipita
vidarlo's Avatar
Donor
Et generelt råd er å behandle all info som blir sendt fra brukeren som et forsøk på å utnytte deg.

Det inkluderer cookies, referer, hidden form fields, form fields, filopplasting o.l.

Kjør aldri ting inn i DB uten å sjekke det.

Aldri kjør variabler du ikkje har laga sjølv gjennom eval();

Aldri stol på at javascript rensker input for deg.
De mest vanlige sikkerhetshullene er vel RFI, XSS og SQL injection.
Filopplastning:
- Selvfølgelig må du nekte filer du ikke vil ha (f.eks .php).
Passord
- Salting av passordene gir dem et snev høyere sikkerhet mot cracking. Det er ikke umulig å cracke saltede passord, men vanskeligere enn at de fleste gir opp etter et par forsøk. Hash gjerne passordene flere ganger i tillegg.
Stoppe bruteforce mot nettsiden kan du gjøre med cookies, sessions og gjerne også IP-blokk etter X antall forsøk.
I tillegg bør du selvfølgelig ikke tillate at brukeren kan benytte PHP eller javascript i f.eks profilen sin eller gjestebøker. Det lureste er vel å kun tillate enkelte HTML-tagger.
Som vidarlo sier, ikke kjør ting inn i db før du sjekker det. Du er sikkert klar over det, men mysql_real_escape_string() er meget kjekk.
Sist endret av LeChuck; 22. mai 2007 kl. 00:35.
Limited edition
Moff's Avatar
Trådstarter
Jeg har tidligere burnet meg så jeg ble skremt da jeg gikk gjennom et script jeg hadde fått av en jeg trodde var skikkelig flink. Det hadde ikke sikring mot noe som helst, slik at man kunne droppe hele databasen min om man ville. Etter det har jeg vært litt beskjeden med å legge ut scriptene mine for publiken.

Ang. Bruteforce:
Er det skummelt å være snill mot folk som kan glemme passordet sitt? Hvis jeg legger inn en funksjon som hindrer brukeren i å taste inn passord oftere enn en gang hvert 10. sekund for eksempel - eller 3 ganger så raskt han vil, også 10 min pause - vil det være en sperre som gjør bruteforce så inneffektivt at ingen orker å drive med det? Man må vel teste nokså mange passord, og hvis man kun kan kjøre ett hvert 10. sekund så må det da ta et hav av tid?
(Jepp, noen av de fremtidige brukerne har en tendens til å bruke en million ulike passord på nettet...)

Også dette med Cookies:
Jeg må ærlig inndrømme at jeg ikke kan stort om dem, annet enn at de inneholder informasjon om brukeren slik at serveren husker hvem det er. Hva slags angrep kan brukeren gjøre gjennom å redigere kakene? Kan det puttes inn skadelige scripter i dem som kjøres uten at jeg nødvendigvis ber om det? Eller er det bare variabler som jeg kan lese og sjekke innholdet i?

Tusen takk for raske svar!
Sist endret av Moff; 22. mai 2007 kl. 01:07.
Cookies er akkurat det samme som med user-input, de kan jo endres av brukeren.

Regelen er vel å slette alt som du ikke forventer, ved hjelp av regex.

Et navn kan f.eks. ikke inneholde !#%& og lignende. Kun a-æA-Æ, ' og - er godtatt.
Queen of Blades
Jonta's Avatar
DonorCrew
Sitat av Moff
Ang. Bruteforce:
Er det skummelt å være snill mot folk som kan glemme passordet sitt? Hvis jeg legger inn en funksjon som hindrer brukeren i å taste inn passord oftere enn en gang hvert 10. sekund for eksempel - eller 3 ganger så raskt han vil, også 10 min pause - vil det være en sperre som gjør bruteforce så inneffektivt at ingen orker å drive med det? Man må vel teste nokså mange passord, og hvis man kun kan kjøre ett hvert 10. sekund så må det da ta et hav av tid?
Vis hele sitatet...
Om du ikke mener dette fra et teknisk synspunkt (der du er meg overlegen uansett vil jeg tro ), så er jo slike sperrer veldig forståelige. T.o.m. hvis man bruker dictionary-attack vil det gjøre hele prosessen mye tregere. Om de _virkelig_ vil komme seg inn kan de jo la programmet gå sin gang i de ukene det tar, men dette gjør vel strengt tatt "bare" hackere/crackere som skal ha tak i sourcecode og keygenerator til store programmer som ikke har blitt cracket enda.

Sitat av Moff
(Jepp, noen av de fremtidige brukerne har en tendens til å bruke en million ulike passord på nettet...)
Vis hele sitatet...
Det er jo bare positivt at de bruker mange forskjellige passord, ser ikke problemet der (om jeg ikke har misforstått)
Limited edition
Moff's Avatar
Trådstarter
Hvis en hacker vil meg til livs klarer han det i fin V-stil, men en person med et høyt kompetansenivå bør skaffe seg et liv om han prøver å bryte seg inn på noe jeg har laget. Det blir litt som å bruke 2 år på å bryte seg inn i kakeskapet til mormor...

Note til The Freak (og Zero og Vidarlo forsåvidt):
Tusen takk for hjelpen! Har fått ordnet en del sikring på dette nå, så får vi se hvordan det utvikler seg.