• 1
  • 2
2024-07-03, 08:56
  #1
Medlem
Vore intressant att höra vad ni anser är säkraste backend-frameworket för webben. Jag tänker då på allt från CSRF/XSS till hur underliggande språk hanterar buffer overflows, kryptering/hashning av lösenord med mera, och historiskt sett hur mycket 0day-exploits som påverkat ramverket och underliggande språk. Googlar man så verkar Django ligga bra till, även Laravel verkar hamna ganska högt upp trots att det är PHP i grunden, som ju nyligen drabbades av en otäck glibc-bugg. Vad tänker ni kring t.ex. Elixir/Phoenix?

Om ni fick i uppgift att bygga en webbtjänst som hanterade väldigt känslig information, vilket ramverk skulle ni välja för att känna er så lugna som möjligt att så lite som möjligt går fel, och om något går fel att skadan begränsas så gott det går?
Citera
2024-07-03, 09:29
  #2
Idealet är såklart att klara sig utan ett tredjeparts-ramverk och alla de beroenden och konflikter/intriger som medföljer nu för tiden. Se över din arkitektur, minimera funktionalitet till det absolut nödvändigaste så ska du snart se att du kan implementera dessa själv i ett etablerat språk du är komfortabel med. Detta reducerar drastiskt risker kopplade till ett ramverk du inte kontrollerar. Välj ett enterprise-språk och runtime med historik, mogenhet och stöd.

Exempel:
  1. Java
  2. C#
  3. Python

Om ett tredjepars-ramverk är ett hårt krav rekommenderar jag https://spring.io med https://spring.io/projects/spring-security och https://spring.io/projects/spring-vault.

Meme-ramverk/runtimes likt Node.js är automatiskt diskvalificerade då exempelvis npm-registret är en petriskål av inkompetens och politiskt motiverade säkerhetsincidenter. Undvik som pesten.
Citera
2024-07-03, 09:38
  #3
Medlem
EXTREMFETMAs avatar
Citat:
Ursprungligen postat av 28k8
Idealet är såklart att klara sig utan ett tredjeparts-ramverk och alla de beroenden och konflikter/intriger som medföljer nu för tiden. Se över din arkitektur, minimera funktionalitet till det absolut nödvändigaste så ska du snart se att du kan implementera dessa själv i ett etablerat språk du är komfortabel med. Detta reducerar drastiskt risker kopplade till ett ramverk du inte kontrollerar. Välj ett enterprise-språk och runtime med historik, mogenhet och stöd.

Exempel:
  1. Java
  2. C#
  3. Python

Om ett tredjepars-ramverk är ett hårt krav rekommenderar jag https://spring.io med https://spring.io/projects/spring-security och https://spring.io/projects/spring-vault.

Meme-ramverk/runtimes likt Node.js är automatiskt diskvalificerade då exempelvis npm-registret är en petriskål av inkompetens och politiskt motiverade säkerhetsincidenter. Undvik som pesten.
Vad gäller Node.js tycker jag du bör kolla upp hur lockfiles funkar, eller alternativa runtimes som Deno. Och lycka till med att skriva en säker webbapplikation i Java utan Spring...
Citera
2024-07-03, 09:55
  #4
Medlem
Citat:
Ursprungligen postat av 28k8
Idealet är såklart att klara sig utan ett tredjeparts-ramverk och alla de beroenden och konflikter/intriger som medföljer nu för tiden. Se över din arkitektur, minimera funktionalitet till det absolut nödvändigaste så ska du snart se att du kan implementera dessa själv i ett etablerat språk du är komfortabel med.
Nu är allt detta egentligen bara en akademisk fråga för mig, då jag inte har några planer på att utveckla någon supersäker webbtjänst i det närmaste. Har faktiskt funderat på att strunta i ramverk borde vara det säkraste, samtidigt finns det så mycket samlat jobb/kunskap nedlagt i många ramverk just för att säkra upp saker som man kanske inte alltid tar hänsyn till om man utvecklar från grunden. T.ex. var det först för några år sedan jag fick upp ögonen för att CSRF/XSS ens var en grej.

Gör man lite mer komplexa system så får man ju antingen bygga ett eget minimalt framework och försöka tänka igenom alla möjliga saker som kan gå fel, medan färdiga ramverk redan gått igenom många tusentals timmar av utveckling. Kanske ett ganska litet ramverk som Flask är en bra kompromiss? Inte jättebloated och har funnits ett bra tag.
Citera
2024-07-03, 12:03
  #5
Moderator
Protons avatar
IT-säkerhet --> Systemutveckling
/Moderator
Citera
2024-07-03, 12:11
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av Burninator
Vore intressant att höra vad ni anser är säkraste backend-frameworket för webben. Jag tänker då på allt från CSRF/XSS till hur underliggande språk hanterar buffer overflows, kryptering/hashning av lösenord med mera, och historiskt sett hur mycket 0day-exploits som påverkat ramverket och underliggande språk. Googlar man så verkar Django ligga bra till, även Laravel verkar hamna ganska högt upp trots att det är PHP i grunden, som ju nyligen drabbades av en otäck glibc-bugg. Vad tänker ni kring t.ex. Elixir/Phoenix?

Om ni fick i uppgift att bygga en webbtjänst som hanterade väldigt känslig information, vilket ramverk skulle ni välja för att känna er så lugna som möjligt att så lite som möjligt går fel, och om något går fel att skadan begränsas så gott det går?
XSS har ju egentligen inte så mycket med ramverket i sig att göra, det är snarare hur man väljer att implementera sina system i ramverket som ställer till det i det fallet.

Beträffande XSRF har väl de flesta modernare ramverk inbyggda konstruktioner för att stoppa sådant, både när frontend består av en htmlsida, samt när fronten är gjort som en SPA nuförtiden.

Tycker fokus på ramverk är lite fel ärligt talat. Om så ramverket vore utvecklat av CIA själva kan de bygga in hur många säkerhetsfunktioner de vill i det, men används de felaktigt alternativt inte alls kan inget ramverk i världen hjälpa upp någon säkerhet.

Kom ihåg att ramverk endast är byggstenar och hjälpmedel. I slutändan är det ändå programmeraren som har ansvaret att bygga ett säkert system.
Citera
2024-07-03, 13:02
  #7
Medlem
Citat:
Ursprungligen postat av Proton
Tycker fokus på ramverk är lite fel ärligt talat. Om så ramverket vore utvecklat av CIA själva kan de bygga in hur många säkerhetsfunktioner de vill i det, men används de felaktigt alternativt inte alls kan inget ramverk i världen hjälpa upp någon säkerhet.

Kom ihåg att ramverk endast är byggstenar och hjälpmedel. I slutändan är det ändå programmeraren som har ansvaret att bygga ett säkert system.
Fortfarande är ju ramverket en svag länk om man nu väljer att använda ett ramverk och litar på att det inte finns några allvarliga säkerhetshål i de olika komponenterna (vilket det med största säkerhet gör oavsett val av ramverk, eller om man väljer att utveckla helt från grunden). Därav undrar jag om det finns något ramverk som kan anses säkrare än andra, "tried and tested" så att säga.

Dessutom är ju programmeringsspråket i sig också direkt knutet till ramverket. Jag skulle t.ex. personligen inte välja Laravel för något som ska vara så säkert som möjligt trots att ramverket i sig innehåller en hel del säkerhet inbyggt, för att det använder PHP i grunden. PHP har inte en jättebra historik vad gäller diverse exploits. Sedan kan ju även val av OS och webbserver vara en svag länk, eller hur man konfigurerar dem.

Även hur bloatat ramverket är, eller hur lätt det är att "göra fel" när man använder sig av ramverket spelar in, och hur enkelt det är att skriva tester med mera. Därför tänker jag som helhet. Gör man ett komplext system så använder man ganska säkert ett ramverk idag, det skulle bli extremt kostsamt att utveckla allt från grunden.

Om vi skojar till det hela lite och hittar på en extremt orealistisk situation full av plot holes, men det är själva andemeningen av vad du väljer i denna situation som är det väsentliga. Säg att du blir kidnappad av någon colombiansk knarkmaffia. Du vet till 100% att ledaren är en riktig hedersknyffel och garanterat står vid sitt ord. Han ger dig i uppdrag att på en månad bygga en webbtjänst på darknet - en hidden service. Typ flugsvamp deluxe 10.0 colombian edition där han kan sälja sitt fina kravmärkta kokain eller vad nu colombianer säljer. Om du fixar det och siten överlever i 1 år utan att FBI/DEA/CIA/Whatever hittar en svaghet i siten som ger dem remote tillgång till servern/innehållet, då låter han dig leva. Som tack för besväret får du även 500 miljoner dollar. Misslyckas du, dvs antingen inte håller tidsramen på 1 månad, eller om siten blir komprometterad inom ett år pga ditt jobb som utvecklare så kommer han mörda hela din släkt framför dina ögon innan du själv blir torterad till döds. Vilket ramverk väljer du? Du kan inte börja tjafsa med honom om infrastruktur och var eller hur siten ska driftas, det har han andra som han gjort samma deal med. Allt han bryr sig om är att koden du skrivit står emot alla typer av "hackerförsök" från myndigheterna.
Citera
2024-07-03, 14:04
  #8
Citat:
Ursprungligen postat av Burninator
Vilket ramverk väljer du?

Du tappade mig fullständigt med ditt knarkmaffia-scenario, men för sakens skull och samtidigt skjuta ut mig ur tråden: Inget.
Citera
2024-07-03, 14:14
  #9
Medlem
Citat:
Ursprungligen postat av 28k8
Du tappade mig fullständigt med ditt knarkmaffia-scenario, men för sakens skull och samtidigt skjuta ut mig ur tråden: Inget.
Då antecknar jag det i min anteckningsbok.
Citera
2024-07-03, 20:32
  #10
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Burninator
PHP har inte en jättebra historik vad gäller diverse exploits.
Vilka hyfsat aktuella exploits är direkt beroende på PHP som programspråk?

Edit: Såg denna, som dock kräver Windows vilket få webbservar kör
https://arstechnica.com/security/202...ndows-servers/

Om man ska vara petnoga är det en CGI-exploit (på Windows).
__________________
Senast redigerad av Enterprise 2024-07-03 kl. 20:38.
Citera
2024-07-03, 20:49
  #11
Medlem
Citat:
Ursprungligen postat av Enterprise
Vilka hyfsat aktuella exploits är direkt beroende på PHP som programspråk?

Edit: Såg denna, som dock kräver Windows vilket få webbservar kör
https://arstechnica.com/security/202...ndows-servers/

Om man ska vara petnoga är det en CGI-exploit (på Windows).
Finns lite olika, det senaste var ganska allvarligt (första i nedanstående lista).

https://www.ambionics.io/blog/iconv-cve-2024-2961-p1
https://lab.wallarm.com/php-remote-c...-ctf-exercise/
https://thecyphere.com/blog/php-security/
Citera
2024-07-03, 21:21
  #12
Medlem
Citat:
Ursprungligen postat av EXTREMFETMA
Vad gäller Node.js tycker jag du bör kolla upp hur lockfiles funkar, eller alternativa runtimes som Deno. Och lycka till med att skriva en säker webbapplikation i Java utan Spring...

Alltså, för serverside är väl Spring i princip att betrakta som core Java.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in