Säker programmering med PHP

  • Författare
  • Meddelande
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Säker programmering med PHP

Inlägg31 okt 2013, 18:45

Så, vi har förslag på lite mer fokus på säkerheten och hur vi bör hantera den när vi kodar i PHP. Som det är nu är den insprängd i olika delar av kursmaterialet och till och från har jag någon föreläsning om det på campus.

Det handlar alltså om hur vi skall skriva säker kod i PHP. Vad innebär säker kod, vilka är de vanliga säkerhetsbristerna i PHP-drivna webbplatser, hur lagrar vi lösenorden och så vidare.

Detta får likt SEO-tråden bli en tråd som fylls på efter hand. Det är bra att ha en plats att lägga allt relevant i. I nästa steg kan det bli ett kursmoment, en föreläsning eller en artikel om det. Men först måste informationen samlas in.

Så, fokus på säker programmering i PHP.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg31 okt 2013, 21:06

Låt oss försöka koppla så många säkerhetstankar som det går till dess OWASP motsvarighet. OWASP är en organisation som samlar in och kategoriserar säkerhetsbrister. OWASP presenterar sig på sin hemsida:

The Open Web Application Security Project (OWASP) is a 501(c)(3) worldwide not-for-profit charitable organization focused on improving the security of software. Our mission is to make software security visible, so that individuals and organizations worldwide can make informed decisions about true software security risks.


Varje år presenterar de en topp tio lista på de vanligaste säkerhetsbristerna, listan går under namnet OWASP Top Ten, det är en bra start för att få en känsla om säkerhetsbrister och vad det handlar om.

Så här säger de om sin topp-lista:

The OWASP Top Ten provides a powerful awareness document for web application security. The OWASP Top Ten represents a broad consensus about what the most critical web application security flaws are.

* OWASP is reaching out to developers, not just the application security community
* The Top 10 is about managing risk, not just avoiding vulnerabilities
* To manage these risks, organizations need an application risk management program, not just awareness training, app testing, and remediation


Som man kan förstå handlar det om fler saker än att bara sanitera inkommande variabler.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg31 okt 2013, 21:20

SQL injection är när användaren kan stoppa in egen kod i din databasfråga. Målet är att få ut, förändra eller förstöra, informationen i databasen. Problemet inträffar ofta när du inte saniterar inkommande variabler.

Koden visar hur det kan gå till när du låter en GET-variabel påverka utformningen av din SQL-fråga. Inte helt ovanligt, men uppenbart olyckligt.

Kod: Markera allt
<?php
$sql = “SELECT * FROM Products WHERE id = ” . $_GET[‘id’];

/*
What if url is ?id=0;SELECT * FROM User; --

Result would be:
SELECT * FROM Products WHERE id = 0;SELECT * FROM User;


Här är en känd seriesekvens på ämnet.

Bild

OWASP har en generell guide hur man kan skydda sig.

Vi väljer att skydda oss främst via PHP PDO och Prepared Statements. Det ger oss skyddet vi behöver. Men, kodar du klumpigt, som i exemplet ovan, utsätter du dig fortfarande för risk. Använd PHP PDO på det sätt som det är tänkt, koppla parametrarna till ?, så funkar saniteringen av de parametrar du använder.

Så här.

Kod: Markera allt
<?php
$sql = "SELECT * FROM Products WHERE id = ? ";
$stm = $db->prepare($sql);
$res = $stm->execute(array($_GET[‘id’]));


SQL Injection beskrivs på OWASP, det är också en del av den säkerhetsrisk som toppar OWASP 2013 Top Ten, A1 Injections.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg31 okt 2013, 21:24

CWE, Common Weakness Enumeration är en annan organisation som katalogiserar och publicerar säkerhetsbrister.

CWE™ International in scope and free for public use, CWE provides a unified, measurable set of software weaknesses that is enabling more effective discussion, description, selection, and use of software security tools and services that can find these weaknesses in source code and operational systems as well as better understanding and management of software weaknesses related to architecture and design.


Deras referens för SQL injections är CWE-89. OWASP länkar dit så OWASP kan vara en bra ingång.
...
..:
.... /mos
Användarvisningsbild

DanielJ

troubleshooter

  • Inlägg: 173
  • Blev medlem: 02 sep 2012, 10:49
  • Ort: Båstad

Re: Säker programmering med PHP

Inlägg31 okt 2013, 21:33

Finns en webbapplikation som är programmerad för att vara osäker. Där kan man testa olika sätt att utnyttja säkerhetsbrister och på så sätt förstå dom lite bättre. Bara att tanka ner och testa!

Damn Vulnerable web applikation - http://www.dvwa.co.uk/

john.svensson

html-guru

  • Inlägg: 67
  • Blev medlem: 01 sep 2013, 19:31

Re: Säker programmering med PHP

Inlägg01 nov 2013, 00:00

Min favorit brukar vara CSRF som många missar... (eller knappt vet om för den delen).

https://www.owasp.org/index.php/CSRF


CSRF is an attack which forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. With a little help of social engineering (like sending a link via email/chat), an attacker may force the users of a web application to execute actions of the attacker's choosing. A successful CSRF exploit can compromise end user data and operation in case of normal user. If the targeted end user is the administrator account, this can compromise the entire web application.

Ett exempel på detta vore om jag har en bildtagg:

<img src="http://mysite.com/user/4/delete" />

En admin (på mysite.com) besöker denna sida och oj... plötsligt raderade han en användare, CSRF sker cross-site, dvs denna bildtag ovan skulle ej ligga på mysite.com. Detta var bara ett exempel, ni kan tänka er vad mycket grejer man skulle kunna lyckas ställa till med.


Relevanta länkar:

http://stackoverflow.com/questions/2526 ... ion-in-php

http://stackoverflow.com/questions/1046 ... est-or-not
.
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Säker programmering med PHP

Inlägg02 nov 2013, 21:57

Om det här blir en kurs kan det vara värt att förklara hur filrättigheter fungerar. Jag vet inte ens om Windows-servrar har det konceptet, men kursen borde i så fall nämna skillnader mellan Unix- (Linux/Mac) och Windows-servrar så att studenten får kännedom om båda versionerna.

Man kan också nämna att "dolda" filer som börjar filnamnet med . som t.ex. .htaccess fortfarande är fullt tillgängliga för vem som helst om man inte begränsar med rättigheter.

I samband med filrättigheter kan man också förklara best practices med att lägga känsliga filer utanför web root på servern så att filerna endast är åtkomliga på det sätt som webbapplikationen är byggd för, och alltså inte direkt åtkomliga genom en webbaddress. Jag vet att man borde tänka på det men jag har inte själv tagit mig tiden att sätta mig in i hur man faktiskt gör, så det får någon annan förklara. "Känsliga filer" kan vara t.ex. SQLite-databaser, hemliga företagsdokument, eller kanske foton på användare som med inställningar har valt att dölja fotot för ej inloggade besökare.

De här sakerna kanske inte direkt relaterar till PHP, men det är ändå något som en PHP-utvecklare bör känna till. Ett viktigt sidospår kanske.
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg05 nov 2013, 02:16

För en nybörjare kan det vara bra att lära sig dessa PHP funktioner, de ger en grunderna i att validera inkommande parametrar och att escapa innehåll innan man skriver ut det på webbsidan.

isset()
empty()
strip_tags()
htmlentities()
is_numeric(), is_string()
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg05 nov 2013, 02:24

För den som vill dyka ned i hur man skyddar sig med säker escaping av data i webbsidans alla delar så finns här en PHP RFC Escaper som föreslår en SPL-klass till PHP med en bättre, och samlad, hantering för att escapa data. Det man skyddar sig mot är Cross-Site Scripting (XSS).

OWASP har sin XSS (Cross Site Scripting) Prevention Cheat Sheet som ger en god grund i ämnet.

Läs PHP RFC:n för escaper och du får både en översyn av de funktioner som finns idag i PHP och en översyn av bristerna. Det är en lysande startpunkt för läsandet om XSS.

Du bör läsa detta när du börjar fundera på om htmlentities() är hela sanningen eller bara början.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg08 nov 2013, 11:38

och så fick vi ett exempel på XSS och hur det går när man litar på en webbprogrammerare som går tvåan och precis har startat kursen i JavaScript...

Grundregel 1A i Cross Site Scripting (XSS) - Lita inte på någon
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg08 nov 2013, 16:01

DanielJ skrev:Finns en webbapplikation som är programmerad för att vara osäker. Där kan man testa olika sätt att utnyttja säkerhetsbrister och på så sätt förstå dom lite bättre. Bara att tanka ner och testa!

Damn Vulnerable web applikation - http://www.dvwa.co.uk/


Det verkar finnas nåt liknande på OWASP, tydligen använder de det i undervisningen (numer) i kursen Software Security på Civilingenjörsprogrammer i Säkerhet. Jag har inte testat det själv men de verkar nöjda med det. Lägger in det här så länge.

OWASP Broken Web Applications Project
...
..:
.... /mos

MrIsaksson

git-maestro

  • Inlägg: 122
  • Blev medlem: 11 jan 2014, 17:20

Re: Säker programmering med PHP

Inlägg28 jan 2014, 20:29

mos skrev:För en nybörjare kan det vara bra att lära sig dessa PHP funktioner, de ger en grunderna i att validera inkommande parametrar och att escapa innehåll innan man skriver ut det på webbsidan.

isset()
empty()
strip_tags()
htmlentities()
is_numeric(), is_string()


Jag har googlat och php.netat, men förstå inte var och när dessa skall användas (fokus på empty(), is_numeric(), strip_tags())

Har någon en länk eller exempel på användningsområden?

Mvh,
Hampus
"Great programmers are lazy, and lazy programmers think in terms of reusability." - Beginning PHP and MySQL 5, From Novice to Professional, page 136.
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Säker programmering med PHP

Inlägg28 jan 2014, 20:50

Det är egentligen ganska enkelt. DU vill ha kontroll över vad som kommer in i din kod från användaren och en del saker kan ta sönder kodens funktion eller till och med vara skadligt. Exempelvis om du har en tom sträng där du förväntar dig text. Tänk att du antar att det ska innehålla något, men så gör den inte det. Plötsligt kanske koden du sätter ihop med den variabeln blir av en helt annan innebörd bara för att det fattas något väsentligt.
Eller så vill du vara absolut säker på att det ID du tar in faktiskt är numeriskt, och inte en text. Eller så kanske du behöver utöva någon slags räkning med variabeln men den innehåller inte ett numeriskt värde?
Strip-tags är nog den mest väsentliga. Den ser till så att HTML-kod som följer med i inputen tas bort, och man kan själv också ange vilka taggar som får vara kvar. HTML-kod kan man nämligen göra väldigt mycket med: länka externa bilder, skript, annan kod, inkludera egen scriptkod och liknande. Det som du kanske förstår kan vara ett stort säkerhetshål.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

john.svensson

html-guru

  • Inlägg: 67
  • Blev medlem: 01 sep 2013, 19:31

Re: Säker programmering med PHP

Inlägg28 jan 2014, 20:54

MrIsaksson skrev:
mos skrev:För en nybörjare kan det vara bra att lära sig dessa PHP funktioner, de ger en grunderna i att validera inkommande parametrar och att escapa innehåll innan man skriver ut det på webbsidan.

isset()
empty()
strip_tags()
htmlentities()
is_numeric(), is_string()


Jag har googlat och php.netat, men förstå inte var och när dessa skall användas (fokus på empty(), is_numeric(), strip_tags())

Har någon en länk eller exempel på användningsområden?

Mvh,
Hampus


På vilket sätt förstår du inte?


empty() returnerar en boolean, true om variabeln du kollar inte existerar eller har ett värde som evalueras till FALSE.

Värden som evauleras itll false är bl.a. 0, "", null, array() osv.

var_dump(empty($var)); //Såvida $var inte är definerad ovan kommer detta dumpa ut false.

Att den inte genererar en warning om variabeln inte är definierad visste jag inte, alltså kan den jämföras med isset(), med en liten skillnad i sig.

is_numeric() kollar om ett värde är numeriskt eller inte. Ganska obvious!

strip_tags() är enligt mitt tycke ganska värdelös och jag använder den personligen inte, då den är rätt crap...

MrIsaksson

git-maestro

  • Inlägg: 122
  • Blev medlem: 11 jan 2014, 17:20

Re: Säker programmering med PHP

Inlägg28 jan 2014, 21:16

Tack för era svar.
Sylvanas, perfekt - det var precis det jag letade efter. Hur jag använder det får jag ta senare, men nu förstår jag varför det används.
john.svensson, jag har läst php i en knapp vecka och det blev för svårt för mig. Kanske jag tittar på ditt svar om ytterligare några veckor och slår mig själv i pannan och utbrister "duh" ... :)

/H
"Great programmers are lazy, and lazy programmers think in terms of reusability." - Beginning PHP and MySQL 5, From Novice to Professional, page 136.
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg19 sep 2014, 08:58

Fick följande feedback i en inlämning i htmlphp och det passar bra som input i denna vår "säkerhetstråd".

Jag hoppas lärarna läser detta och vill då att passa på att påpeka några saker som jag tycker är horribelt, och som jag hoppas vi kommer att lära oss att så skall man inte göra;

* Sidor som hanterar inloggning/registrering motsvarande skall vara krypterade. TLS/SSL kryptering måste användas. Exempelvis kan nämnas dbwebb.se, där man skickar sitt lösenord helt i klartext när man loggar in. Inte ens en utvecklingsmiljö skall vara okrypterat. För man kan stöta på problematik när man helt låter bli att tänka på krypteringen
* Lösenord som måste vara ett exakt antal tecken långt. - Exempelvis lösenordet på studentportal.bth.se (Dock är den ju åtminstone krypterad som tur är)
*Att säkerhetstänk finns med från början när vi utvecklar. - Exempelvis input valididering/OWASP motsvarande. Detta är inget jag kan, men vill lära mig. För internet skulle må bra av lite bättre och säkrare kod


:) Har inget försvar till det som åligger mig, https på dbwebb.se... medveten om det, prioriterat ned det (men det är inte ett försvar, bara ett konstaterande...).
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg19 sep 2014, 09:26

Fick en fråga om hur man skyddar sin SQLite-databas.

nist skrev:Jag kanske har missat detta men hur skyddar man egentligen sin databas från obehöriga. I nuläget kan man ladda ner den om man går direkt till URL:en för den. Förstår att det inte spelar någon roll just nu men i framtiden om man skulle vilja använda sig utav SQLite.

Jag testade att lägga den ett steg upp från www-katalogen och ändra $dbPath dit istället och det fungerade. Nu ligger den alltså ett steg utanför webbserverns root. Är denna lösning säker?


Ja, det är ett bra sätt.

Man vill flytta bort alla filer som inte behöver ligga i webbrooten och lägga dem på en plats där de inte uppenbart kan nås via webbläsaren/webbservern. Det är ett grundsteg för att uppnå en säkrare installation av sin webplats.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg13 okt 2014, 09:14

Läste i en redovisning från htmlphp om lösenordshashning.

Vi börjar med det viktiga: "MD5 refereras som något man vanligen använder vid lösenordsskydd på sidan functions.php"(http://dbwebb.se/htmlphp/me/kmom03/incl ... ctions.php). DET ÄR FEL. SHA1 precis som MD5 är numera inget man skall använda sig av, det är dåligt och något man skall undvika att använda sedan 2011. http://googleonlinesecurity.blogspot.se ... htmlSHA256 gäller.


Vid hashning av lösenord är det vanligt att webbplatser använder sig av antingen MD5 eller SHA1, med eller utan salt. Det finns många webbplatser på nätet och flera har funnits i många år. Där är det inte alls ovanligt att finna dessa tekniker för att hasha lösenord. Därmed inte sagt att dessa tekniker är tillräckligt bra.

Förhoppningsvis använder man ett salt i kombination med MD5 eller SHA1 för att uppnå bättre säkerhet.

Numer (från PHP5.5), är det funktionen password_hash() som är det rekommenderade sättet att skapa lösenord i PHP. För att verifiera ett lösenord används password_verify(). Det är algoritmen Bluefish som används (för närvarande).

Läs mer om hantering av lösenord (i PHP).
http://php.net/manual/en/faq.passwords.php
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg03 dec 2014, 11:18

Ett exempel, inte helt ovanligt, på icke säker programmering i PHP.
Kod: Markera allt
if(isset($_GET['p']) && $_GET['p'] != "" && file_exists("incl/test/" . $_GET['p'] . ".php")) { 
  include("incl/test/".$_GET['p'].".php");


Det är faktiskt en konstruktion som har plats 1 i PHP Top 5 på OWASP.
https://www.owasp.org/index.php/PHP_Top_5

Den faller under begreppet Remote Code Execution.

Man skall inte inkludera en fil, där den som anropar sidan kan styra vilken fil som inkluderas. I ovan kodexempel så blir det fallet, tänk om länken var något i stil med:
Kod: Markera allt
?p=../../../etc/passwd


Har man riktigt otur så fixar den som attackerar dig, först ett entry i en logfil eller motsvarande, sedan inkluderar de den loggfilen och har på så sätt möjlighet att exekvera kommandon på din server.
...
..:
.... /mos

john.svensson

html-guru

  • Inlägg: 67
  • Blev medlem: 01 sep 2013, 19:31

Re: Säker programmering med PHP

Inlägg03 dec 2014, 18:41

mos skrev:Ett exempel, inte helt ovanligt, på icke säker programmering i PHP.
Kod: Markera allt
if(isset($_GET['p']) && $_GET['p'] != "" && file_exists("incl/test/" . $_GET['p'] . ".php")) { 
  include("incl/test/".$_GET['p'].".php");


Det är faktiskt en konstruktion som har plats 1 i PHP Top 5 på OWASP.
https://www.owasp.org/index.php/PHP_Top_5

Den faller under begreppet Remote Code Execution.

Man skall inte inkludera en fil, där den som anropar sidan kan styra vilken fil som inkluderas. I ovan kodexempel så blir det fallet, tänk om länken var något i stil med:
Kod: Markera allt
?p=../../../etc/passwd


Har man riktigt otur så fixar den som attackerar dig, först ett entry i en logfil eller motsvarande, sedan inkluderar de den loggfilen och har på så sätt möjlighet att exekvera kommandon på din server.


Vad är lösningen då? :?
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg08 dec 2014, 16:27

john.svensson skrev:Vad är lösningen då? :?


Koden är från kmom05 i htmlphp-kursen och där används från början en switch-sats som mappar inkommande _GET till ett filnamn.
Kod: Markera allt
$p = isset($_GET['p']) ? $_GET['p'] : null;
if ($p == "about") {
  include "about.php";
}


Det är inte ovanligt att de som kan lite mer PHP hittar en kodlösning som eliminerar switch-satsen. Men ibland så löser de inte den säkerhetsproblematik som switch-satsen löste. Precis som koden ovan var ett exempel på.

Det finns andra sätt att lösa detta än switch, till exempel med en array. Poängen är dock att man gör en koll av inkommande parametrar och kontrollerar om det är "rätt" värde eller så översätter man inkommande värde till ett annat (som motsvarar filens namn).

Huvudsaken är att man hanterar det osäkra värdet och inte hamnar i sits där man egentligen bara gör:
Kod: Markera allt
include $_GET['p'];


För det är inte bra (alla kan komma åt alla filer på din server).
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg06 aug 2015, 07:58

Om du funderar på hur man ska skriva säker kod så kan det vara bra att se hur en som attackerar din kod, tänker, när de försöker hitta exploits i din kod.

Här är en mycket välskriven artikel om hur en attackerare letar sig in i en WordPress-webbplats genom att studera och analysera källkoden för WordPress. Steg för steg tar de sig in i systemet och för varje steg får de lite mer rättigheter.

Finding Vulnerabilities in Core WordPress: A Bug Hunter's Trilogy

Så här summeras artikeln:

This means that we need to wait a full week in order to exploit our vulnerability, as this is the time frame that takes that draft to be deleted. Fortunately for us, tokens usually last 24 hours, allowing us to retrieve the token a day before the expected deletion date, and using it in order to get into ‘edit_post()’ after the draft gets deleted.

Finally, after passing the token validation, the privileges validation, the basic admin validation, and the post ID validation, changing the post status to ‘trash’ is as simple as sending an HTTP parameter. Thank God.

Combining all of these bypasses together, we use a chain of around a dozen different bugs, a faulty privilege system, and about every false assumption in the system to achieve partial editor privileges. The road to a critical vulnerability is still long, but at its end we found both a SQLi and an XSS, to be described in the next posts.
...
..:
.... /mos
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Säker programmering med PHP

Inlägg16 dec 2015, 11:11

mos skrev:Fick följande feedback i en inlämning i htmlphp och det passar bra som input i denna vår "säkerhetstråd".

Jag hoppas lärarna läser detta och vill då att passa på att påpeka några saker som jag tycker är horribelt, och som jag hoppas vi kommer att lära oss att så skall man inte göra;

* Sidor som hanterar inloggning/registrering motsvarande skall vara krypterade. TLS/SSL kryptering måste användas. Exempelvis kan nämnas dbwebb.se, där man skickar sitt lösenord helt i klartext när man loggar in. Inte ens en utvecklingsmiljö skall vara okrypterat. För man kan stöta på problematik när man helt låter bli att tänka på krypteringen
[...]


:) Har inget försvar till det som åligger mig, https på dbwebb.se... medveten om det, prioriterat ned det (men det är inte ett försvar, bara ett konstaterande...).


Nu finns det i alla fall ett initiativ (Let's Encrypt ) till att göra kryptering av webbsidor gratis så att man inte ska behöva gå igenom den krångliga processen av att identifiera sig och betala för att få ett pålitligt certifikat.

"Let’s Encrypt is a free, automated, and open certificate authority (CA), run for the public’s benefit. Let’s Encrypt is a service provided by the Internet Security Research Group (ISRG)."

Kanske är 2016 året som dbwebb blir krypterat? ;)
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg16 dec 2015, 13:34

Allinrep skrev:Kanske är 2016 året som dbwebb blir krypterat? ;)


;)
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg22 sep 2016, 08:17

Förra veckans försläsning handlade delvis om säker programmering och jag pratade bland annat om XSS.
(länk till föreläsningen)

Häromdagen var jag själv upphov till en XSS-möjlighet i skriptet på uptime.dbwebb.se. Snabbt fixade jag det innan tomten (eller någon annan leksugen) fick möjlighet att glänsa och XSS webbplatsen och samtidigt förpassa mig till zonen av "ha-ha-han-som-blev-xssad-igen!".

Här kan du se min commit som räddade mig.

Skillnanden var alltså htmlentites. Utan det så gick det nämligen bra att skicka in ett JavaScript, tex <script>alert("hej");</script> när man rapporterade in sin uptime.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg27 sep 2016, 17:56

mos skrev:Förra veckans försläsning handlade delvis om säker programmering och jag pratade bland annat om XSS.
(länk till föreläsningen)


Förutom XSS pratade jag om CSRF (bortsett från att jag glömde bort termen CSRF...).
Cross Site Request Forgery

John berättar om den i ett inlägg om CSRF här ovan.

Det handlar om att någon lurar användaren att utföra en viss request (url), utan att användaren är medveten om det.

XSS öppnar för den möjligheten. Med XSS kan någon posta ett skript som utför en beställning i en webbshop i ditt namn.

Jag nämnde att POST skyddar oss. Men det stämmer inte, nu när jag läser på hos OWASP. Då har man lärt sig något idag igen. Kika gärna hur man "skyddar sig mot CSRF", man får upp ögonen för att inget är lätt, många saker samverkar.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg13 feb 2017, 09:19

Här kan vi se hur en hackare tar sig in i ett CMS genom att testa sig fram steg för steg. Egentligen handlar det om ett == versus ett === (för att skydda sig). Det är spännande läsning och en studie i sårbarhet hos olika PHP-konstruktioner när de samverkar i ett större system.

Type Juggling and PHP Object Injection, and SQLi, Oh My!

Spännande läsning.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10921
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Säker programmering med PHP

Inlägg19 apr 2017, 01:16

OWASP Top Ten är på väg att släppa sin topplista för 2017. Det är en PDF som visar och förklarar de mest kritiska säkerhetsriskerna. Vill man få lite bättre insikt i ämnet säkerhet kring webbplatser och webbapplikationer så är dokumentet en bra start.

Ladda ned pdf:en "OWASP Top 10 - 2017 Release Candidate" via deras hemsida.
https://www.owasp.org/index.php/Categor ... en_Project
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster