Vanliga säkerhetshål och lösningar

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3 ... 5, 6, 7 ... 9, 10, 11  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
pengi
Ex-Moderator



Medlem i: 4785 dagar
Från: JO57XQ
Status: Offline



#574005
Inlägg Skrivet: 2008-04-21 10:53      Ämne: Citera

bitcomplex skrev:
ja, vid närmare eftertanke så var den lösningen inte alls bra - så glöm den...

Lyckades precis få två medarbetare på kontoret att utan sin egen vetskap lägga till lite användare med admin-rättigheter i ett system med hjälp av xss...

Det måste finnas något bättre än captcha... ???

Jag vet bara ett annat sätt med. Men jag kan försöka motivera.

om vi förutsätter att det går att trigga ett forumlär ifrån ett script och scriptet har full behörighet (det är bra antaganden för att sätta upp en säker lösning). Vad är det enda som server-delen kan gå på isf? Det vi vill identifiera är ifall det är ett datorprogram eller en människa som trycker på skicka.

Metoder som används för att särskilja datorer från människor automatiskt går under namnet CAPTCHA. Den säger inte om det är via bild eller annat sätt, men bild är bäst hittils, och det är det vi kan identifiera på.

Nästa variant är att inte identifiera om det är dator eller människa. Det viktiga är att vi utestänger datorerna från mängden som får trigga formuläret, men utestänger vi några människor somm inte borde trigga det med gör inte det något. Dvs. man kan tänkas att man måste fylla i något som endast behörig användare vet som servern kan kontrollera om det är korrekt. Vi råkar just ha något sådant i systemet, vilket är lösenord. Så lägger man in ett lösenordsfält på formuläret för att utföra funktionen är man säker med. Detta är dock inte lika generellt då det kräver en inloggning med lösenord. (engångs eller flergångs spelar inte någon roll)
 

_________________
"Question everything. Never trust propaganda. Keep on hacking." - Phrack
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
bitcomplex



Medlem i: 4624 dagar
Från: Skåne
Status: Offline



#574020
Inlägg Skrivet: 2008-04-21 13:18      Ämne: Citera

Känns som om SAS-webapplikationer kan vara ganska sårbara. Om man har ett konto så vet man lite om hur systemet är uppbyggt även för andra... Och kan lätt(are) göra ett elakt script...

Förresten, ang ditt förslag om lösenord, så kan jag tänka mig att en säkerhetskod (om vi tänker oss att användaren redan är inloggad med ett vanligt lösenord så kanske han även har en 4-siffrig pinkod för att verifiera vissa mer kritiska göromål) är betydligt mer säkert än en bild. Kan man inte med lite Social Engineering läsa av formuläret man vill xssa - skriva ut bilden och få användaren att tro att han fyller i ett annat formulär någon annanstans som också använder capthas?

En pinkod vet han däremot att den bara hör hemma i ett visst system och låter sig (förhoppningsvis) inte luras...

Men jag förstår inte... Om det nu, med lite vetskap om hur en sida är uppbyggt, är så enkelt att ställa till ofog - varför märker man inte av att det görs mer? Varförär det ingen säljare på tradera som tex lurar en inloggad användare att lägga ett autobud på några tusen på sin vara? Varför är det ingen fjortis som postar inlägg i någon annans namn på phpportalen? etc...

Hur är phpportalen skyddad tex?
 

_________________
Twitter
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
pengi
Ex-Moderator



Medlem i: 4785 dagar
Från: JO57XQ
Status: Offline



#574039
Inlägg Skrivet: 2008-04-21 16:17      Ämne: Citera

kan man få användaren att tro att ett formulär är ett annat än det han egentligen fyller i så är inte ens lösenord något man kan spärra med. Skulle kunna tänka mig så som swedbank gör, då dom förklarar vilken kod som ska hashas med en säkerhetsdosa, men då är vi på hårdvarulösningar.

Phpportalen antar jag att den inte är jätteskyddad för XSS, då det, vad jag har sett, verkar vara en vanlig, dock hård modifierad, phpBB.

Jag tänker inte undersöka och försöka exploita den utan någon admins direkta tillåtelse, så jag kan inte svara på detta.
 

_________________
"Question everything. Never trust propaganda. Keep on hacking." - Phrack
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
pengi
Ex-Moderator



Medlem i: 4785 dagar
Från: JO57XQ
Status: Offline



#577690
Inlägg Skrivet: 2008-05-06 12:57      Ämne: Citera

Det känns som att den här tråden behöver uppdateras lite med några andra vanliga (dock inte lika vanliga) säkerhetshål som förekommer.

Mina tankar är bl.a. åt filuppladdning av godtyckliga typer, och då uppladdning av exekverbara filtyper.

Men jag har sett att andra typer av säkerhetshål har dykt upp här med, men jag kan inte komma på vilka...

Register globals eller register-globals-simuleringar har jag sett med, men det känns lite inaktuellt, men kan skriva dit något stycke om det med.

Lösenordssäkerhet är ett så stort område som väl förtjänas att tas upp, men det är för stort för det här, samt att det inte är säkerhet i form av att hindra intrång, utan snarare att skydda sig mot att ett intrång som har skett inte ska göra lika stor skada, vilket gör att jag väljer att hoppa det i denna text.

Kan någon av er komma på något som jag borde skriva om som jag inte har tagit upp?
 

_________________
"Question everything. Never trust propaganda. Keep on hacking." - Phrack
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Walkman
Ex-Moderator



Medlem i: 4995 dagar
Från: Vaxholm (bor i Göteborg)
Status: Offline



#577691
Inlägg Skrivet: 2008-05-06 13:25      Ämne: Citera

Session hijacking kanske vore värt att ta upp, även om det ofta är en kombination av flera hål som gör det användbart. Möjligtvis XSRF också, men det är inte lika vanligt…
 

_________________
Koda alltid som om nästa person som till slut ska läsa din kod är en våldsam psykopat och vet var du bor.

Förstå kod innan du använder den.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
webbhelp



Medlem i: 4677 dagar
Från: Sverige
Status: Offline



#578992
Inlägg Skrivet: 2008-05-12 18:29      Ämne: Citera

Vilken sjukt bra tråd, jag visste inte så mycket om vad man egentligen bör skydda sig emot, jag visste inte hur man gjorde MySQL injectioner, därför var det svårt att veta hur man kunde skydda sig mot dom.


Tack för denna enormt bra förklaring Smile Very Happy

//WebbHelp
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
enjoiskater



Medlem i: 4402 dagar

Status: Offline



#581387
Inlägg Skrivet: 2008-05-22 20:04      Ämne: Citera

Måste bara börja med att tacka för denna super bra hjälp tråd angående säkerhet. Sen tänkte jag bara höra jag kanske har missat det men hur är det med säkerhet i forumulär, jag menar som i exempelvis en sökmotor, hur hindrar man från att någon ska kunna skriva något som tar bort min databas osv.

Som sagt jag kanske har missat det när jag läste i tråden men hur funkar det egentligen med sådan säkerhet?
 

_________________
Jag är alltid tacksam för hjälp!!!
http://www.arcticgamer.se/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Walkman
Ex-Moderator



Medlem i: 4995 dagar
Från: Vaxholm (bor i Göteborg)
Status: Offline



#581399
Inlägg Skrivet: 2008-05-22 20:21      Ämne: Citera

enjoiskater skrev:
Måste bara börja med att tacka för denna super bra hjälp tråd angående säkerhet. Sen tänkte jag bara höra jag kanske har missat det men hur är det med säkerhet i forumulär, jag menar som i exempelvis en sökmotor, hur hindrar man från att någon ska kunna skriva något som tar bort min databas osv.

Som sagt jag kanske har missat det när jag läste i tråden men hur funkar det egentligen med sådan säkerhet?

SQL-injektioner är det främst (som är ett hot mot databasen). Möjligtvis XSS/“Javascript injektion” om du skriver ut söksträngen på sidan efter sökningen.

Båda två finns under varsin rubrik i första posten så det är bara att läsa de två extra noga. Wink
 

_________________
Koda alltid som om nästa person som till slut ska läsa din kod är en våldsam psykopat och vet var du bor.

Förstå kod innan du använder den.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
enjoiskater



Medlem i: 4402 dagar

Status: Offline



#594191
Inlägg Skrivet: 2008-08-10 13:50      Ämne: Citera

Hej, jag sitter och ska bygga iordning min admin del till hemsidan och ska försöka göra den säker också men jag har dock stött på ett problem med mysql_real_escape_string redan och tänkte höra om någon kanske bara kan förklara lite hur jag ska göra använda detta.

Jag förstår lite hur man ska använda det när man ska kolla saker från databasen som exempelvis ett lösenord men hur ska jag använda det när jag ska skriva in värden i min databas.


Jag har denna kod för att lägga in värdena i min databas

KOD:
1:
 
2:
 
3:
<?php
4:
// skriver information till den angivna tabellen
5:
$news = mysql_query("INSERT INTO news (game_id, category, headline, headlinesummary, biggersummary, info, format, mapp, news, author)
6:
VALUES('$_POST[game_id]',
7:
       '$_POST[category]',
8:
       '$_POST[headline]',
9:
       '$_POST[headlinesummary]',
10:
       '$_POST[biggersummary]',
11:
       '$_POST[info]',
12:
       '$_POST[format]',
13:
       '$_POST[mapp]',
14:
       '$_POST[news]',
15:
       '$_POST[author]')
16:
")
17:
 
18:
or die("Kunde inte lägga till nyhet:<br />" . mysql_error());
19:
 
20:
// visar om nyheten har lagts in!
21:
echo "Nyheten är klar!<br />";
22:
echo "<br /><br /><a href='länk.php'>Tillbaka till formuläret </a><br />";
23:
 
24:
 


Och jag är inte helt säker hur jag ska använda mysql_real_escape_string koden, för jag tänkte att jag ska lägga in den precis efter VALUES men vet inte om det är rätt och den skyddar koden då?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
WizKid
Ex-Moderator



Medlem i: 6462 dagar
Från: Stockholm
Status: Offline



#594196
Inlägg Skrivet: 2008-08-10 14:20      Ämne: Citera

mysql_real_escape_string ska du köra på de värden som du vill ha in i SQL-queryn. Alltså $_POST['game_id'], $_POST['category'] osv.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
Peppe L-G



Medlem i: 4662 dagar
Från: Mullsjö
Status: Offline



#598426
Inlägg Skrivet: 2008-08-31 11:36      Ämne: Citera

Nu har jag en tanke om saltning på lösenorden igen.

Om man sätter salt både bakom och framför lösenordet så blir ju lösenordet saltat. Men om användaren har har "" (inget) som lösenord så blir ju lösenordet inte saltat, utan det enda som händer är ju att saltet blir krypterat, och hackaren kan på ett enklare sätt ta reda på vilket salt jag använder.

Tänker jag rätt, eller?

Bör man ha att lösenordet minst måste vara X-tecken långt? I så fall, vad är det kortaste ett lösenord borde vara?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
pengi
Ex-Moderator



Medlem i: 4785 dagar
Från: JO57XQ
Status: Offline



#598428
Inlägg Skrivet: 2008-08-31 12:36      Ämne: Citera

Peppe L-G skrev:
Nu har jag en tanke om saltning på lösenorden igen.

Om man sätter salt både bakom och framför lösenordet så blir ju lösenordet saltat. Men om användaren har har "" (inget) som lösenord så blir ju lösenordet inte saltat, utan det enda som händer är ju att saltet blir krypterat, och hackaren kan på ett enklare sätt ta reda på vilket salt jag använder.

Tänker jag rätt, eller?

Bör man ha att lösenordet minst måste vara X-tecken långt? I så fall, vad är det kortaste ett lösenord borde vara?

Du har missuppfattat vad salt är.

salt är unikt för varje användare, och det är inte särskillt hemligt heller. Om en hackare får tag på hela databasen har han även hela listan på alla salt.

Det salt är till för är att en hackare inte ska kunna göra en ordlistaattack på hela databasen samtidigt, utan endast kunna attackra en användare i taget. Detta för att om en användare skriver "hej" som lösenord, och den får saltet "a" (kort, men exempel endast" så hashas "heja". Nästa användare som också har lösen "hej" får kanske saltet "b", vilket ger "hejb". Detta blir en helt annan hash, och hackaren har inte någon möjlighet att testa båda samtidigt effektivt.

Att hålla en hemlighet (det du kallar salt) eller liknande dolt är lika lätt som att hålla användares lösenordshashar dolda, så kan hackaren komma åt lösenordshasharna kommer han troligtvis även på något sätt åt denna hemlighet.
 

_________________
"Question everything. Never trust propaganda. Keep on hacking." - Phrack
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Walkman
Ex-Moderator



Medlem i: 4995 dagar
Från: Vaxholm (bor i Göteborg)
Status: Offline



#598431
Inlägg Skrivet: 2008-08-31 13:18      Ämne: Citera

Citat:
Bör man ha att lösenordet minst måste vara X-tecken långt? I så fall, vad är det kortaste ett lösenord borde vara?

I och med att du hashar resultatet med ett (dynamiskt) salt så spelar det egentligen ingen roll. Se bara till att saltet är tillräckligt långt.

Nackdelen med att tillåta korta lösenord är att de är enklare att lista ut än ett långt lösenord genom att testa sig fram, så om man är ute efter en specifik användare och vet att deras lösenord bara är ett tecken så blir det lite enklare att logga in på dem via din sida.
 

_________________
Koda alltid som om nästa person som till slut ska läsa din kod är en våldsam psykopat och vet var du bor.

Förstå kod innan du använder den.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
GarfIIeld



Medlem i: 4183 dagar
Från: Piteå
Status: Offline



#598432
Inlägg Skrivet: 2008-08-31 13:24      Ämne: Citera

siffror och dylikt kan ju också vara bra att ha i lösenorden. (samma syfte som Walkman angav)
 

_________________
Arch Linux - Simplicity, code-elegance and minimalism.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Peppe L-G



Medlem i: 4662 dagar
Från: Mullsjö
Status: Offline



#598433
Inlägg Skrivet: 2008-08-31 13:37      Ämne: Citera

pengi skrev:
Salt är unikt för varje användare, och det är inte särskilt hemligt heller. Om en hackare får tag på hela databasen har han även hela listan på alla salt.

pengi skrev:
Du har missuppfattat vad salt är.

Tydligen. Jag trodde att det räckte med att man la till en statiskt sträng fram/bakom/både framför och bakom lösenordet för att det skulle klassas som saltning, men tydligen inte.

Walkman skrev:
Se bara till att saltet är tillräckligt långt.

Tillräckligt långt för vadå? Och vad klassas som tillräckligt?


Men om man vill ge en hackare ett så grymt helvete man bara kan för att lista ut de saltade lösenorden, vad ska saltet då bestå utav?

I tabellen "medlemmar" har jag ju kolumnen "id" som är unikt för varje medlem. Detta värdet kommer ju aldrig att ändras för någon medlem.
Jag har även kolumnen "registrerad" (typen date) som heller aldrig kommer att ändras, och den skiljer sig ju bland vissa medlemmar, så kommer detta att bli en bra saltning:

md5("id".lösenord."registrerad")

? Eller bör "id" och "registrerad" byta plats? Eller bör jag bara ha med "id" och byta ut "registrerad" emot en statiskt sträng istället?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3 ... 5, 6, 7 ... 9, 10, 11  Nästa
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic