>> LUCIANO Arango: OK, killar.
Mitt namn är Luciano Arango.
Jag är en sophomore i Adams House.
Och vi kommer att tala om webbsäkerhet aktivt försvar.
Så jag arbetar för myndigheten för informations Säkerhet i SEAS.
Och under sommaren, internerade jag på SeguraTec, vilket var en informations
säkerhetsföretag som tjänade för Bank of Columbia.
Det är oftast där jag lärde mig vad jag har lärt mig hittills.
>> Och så en del av det material som vi är kommer att gå över i dag, har vi inte
verkligen talade om i klassen.
Men vi kommer snart.
Det kommer att bli som SQL, Javascript.
Och vi har inte riktigt gått över den.
Så jag kan sortera av flyg genom den, och du kanske inte vet vissa saker.
Men snart får du lära dig det.
Och det kommer alla vettigt.
Också en annan sak -
stanna etiskt.
Några av de saker som du lär dig, du skulle kunna använda i icke-etiska sätt.
>> Om det är din, definitivt prova.
Jag motiverar definitivt ni att prova dina egna servrar, prova
att gå i dem.
Se om du kan tränga igenom dem, om du kan få i dem.
Men inte någon annans.
Cops egentligen inte gillar skämt och Sammantaget lägger vi det här.
Vi messing.
De blir riktigt arg.
>> Så bege dig till denna webbplats.
Jag har det öppnat här.
Detta är en hemsida, och det har en massa exempel.
Vad som händer är att det första exemplet är sorts kommer att bli mycket enklare
än det sista exemplet i en mening att det första exemplet
är helt osäker.
Och den sista är typ av vad en normal webbsäkerhet person skulle göra.
Men du kan fortfarande sortera för komma runt det.
Och vi kommer att fokusera på ett och två, varvid exempel ett och två.
>> OK.
Låt oss börja med cross-site scripting.
JavaScript körs på klientens webbläsare.
Det är ett programmeringsspråk som du använder att köra på kundens webbläsare så
du behöver inte uppdatera hemsidan och gå tillbaka till servern.
Du har det igång.
Till exempel Facebook, har du inte att ladda om webbsidan för ny status
uppdateringar för att komma upp.
Det använder Javascript för att generera alla dessa saker.
Så vi kan injicera skadlig JavaScript i de webbplatser.
Och på det sättet, när vi skickar en länk till någon, vi kunde sorts skicka det med
en del av den kod som vi vill ha.
>> Det är långlivade och icke-ihållande JavaScript -
långlivade och icke-ihållande cross-site scripting, menar jag.
Och skillnaden är att långlivade är JavaScript som kommer att vara
sparas på webbplatsen.
Och icke-ihållande blir JavaScript som egentligen bara händer en gång.
Så låt oss titta på ett exempel riktigt snabbt.
>> OK.
Så denna webbplats, enkla, ingenting händer här.
Och vi kommer att försöka sätt in lite JavaScript.
Så hur vi börjar skriva JavaScript är börjar vi med början manus.
Och vi stänger den med manus.
Vi ska helt enkelt gå att sätta ett budskap -
Jag ska visa dig -
alert.
Alert är en funktion som JavaScript använder för att visa något.
Så låt oss prova det riktigt snabbt.
Jag ska gå, alert hej.
Jo, jag glömde att sätta -
OK.
Så det är enkelt.
>> Vi lägger JavaScript på en webbsida, och det kom upp.
Och det slags bara händer på vår hemsida, eller hur?
Så det verkar som om det inte är ett problem, eller hur?
Jag menar, hur kan du använda detta skadligt?
Så hur hackare göra det är verkligen enkelt.
De kommer att ta tag i den.
De kan skicka den här länken till dig.
Om jag ska skicka den här länken för dig just nu, och du öppnar upp det, det kommer att
säga, hej, säger att min hemsida säger till dig hej.
>> Och så om jag skulle säga något lite smartare, om jag drar upp en
JavaScript-funktionen jag typ av redan skrivit -
men om man ser på det, jag ska gå över det innan jag skrev det.
Så vi kommer att sätta en timeout.
Vi kommer att vänta på ett par sekunder.
I själva verket kommer vi att vänta på, om Jag inte misstar mig, fem sekunder.
Detta går i millisekunder.
Och vad vi ska göra är att vi är kommer att varna att inloggningen
timeout för att logga in igen
Och vi kommer att ändra platsen till en annan plats.
>> Så om jag skickar denna webbplats till någon, de ska vara
surfa runt, lugn.
Ingenting händer.
Och i fem sekunder, det kommer att säga, tidsinställda inloggnings ut.
Logga in igen
När de klickar på OK, kommer jag att ta dem till en annan webbplats.
Förmodligen är webbplatsen kommer att likna den webbplats som
de var i innan.
Och de ska logga sina referenser till min hemsida istället för
deras hemsida.
>> Och så jag kan skicka folk en e-post med den här länken.
Jag säger, åh, här är en länk.
Detta är en bank, exempelvis.
Jag säger, här, gå på den här länken.
Och när de väl skicka det, de är kommer att surfa runt.
Jag kan vänta i 15 sekunder, 20 sekunder, och sedan pop att vänligen logga in igen
underteckna igen.
Ni kan prova med mycket mer saker.
Det är komplicerat, eftersom ni har inte sett JavaScript, så du kanske
vet vissa funktioner.
Men allt du behöver göra är att starta med manus, sluta med manus.
Och du kan lägga något i mitten.
>> Alert är en funktion, vänta.
Fönster läge tar dig till en ny plats.
Men du kan göra så mycket mer.
Och så tanken är att Vi tar det bort.
Om jag går till exempel två, och jag sätta in samma kod, det är
inte kommer att fungera.
Så det är att skriva ut allt eftersom vad denna webbplats som ursprungligen
gör är om jag sätter något här, det ska skriva ut den här.
Så det är inte att skriva ut något.
Detta exempel är faktiskt kontroll för att se om skriptet är där.
Så ja, sätt igång.
Be mig.
>> PUBLIK: Är inte skicka en få eller skicka förfrågan?
>> LUCIANO Arango: Ja. de är sända en begäran få.
>> PUBLIK: Det är?
>> LUCIANO Arango: Ja.
Även webbläsare använder POST-begäran.
Men jag försöker att visa får förfrågningar så att vi kan se vad som är
faktiskt pågår.
Och så om vi tittar på den här koden - så det fungerar inte längre.
Och om vi tar en titt på denna kod, det kommer att vara i exempel två.
Vad den här personen gör, den person ansvarig för den här webbläsaren -
öppna upp, OK -
ersätter ordet manus.
Detta är PHP, som ni kanske har sett lite av ännu.
>> Han bara byter ut Ordet manus med namn.
Så men om jag går vidare och bara sätta in -
Om jag ta min kod igen, och jag kommer att ändra det bara lite.
I stället för manus, jag ska ändra den för manus med stort R. Och
vi kommer att se om den här koden fungerar.
Så det inte att skriva ut det, vilket är ett gott tecken.
Och förhoppningsvis i två sekunder, det kommer att dyka upp.
>> Din inloggning timeout.
OK.
Det är okej.
Så kolla efter manus kanske inte nödvändigtvis fungerar.
Personen -
det kan också leta efter manus versaler, script gemener, str fall
jämföra, se till att de är samma.
Men hackaren kan fortfarande göra sorts vad vi gjorde i Vigenère när vi flyttade
tillbaka ett par tecken, gå framåt.
Och det kan lista ut hur man lägger skriptet tillbaka på det så det kan injicera
att skriptet.
>> Så vad du vill använda är htmlspecialchars till
skydda din webbplats.
Och vad detta innebär är det gör till att det du sätter in -
till exempel offerter eller detta större än eller mindre än -
är ersatt med något som inte kommer att vara -
Låt mig zooma in här -
den verkliga ampersand.
Den kommer att ersätta de speciella HTML tecken som vi får se när vi är
talar om -
åh, det här kommer att ta mig tillbaka till -
dessa tecken här.
>> Det betyder att något kommer.
För HTML, som börjar fäste säger oss att något
HTML-relaterade kommer.
Och vi vill bli av med det.
Vi vill inte sätta HTML i en website.k Vi vill inte att användaren ska
kunna sätta något på deras hemsida som kan påverka deras hemsida, som
skript eller HTML eller något liknande.
Det viktiga är att du sanitize användarinmatningen.
>> Så användarna får indata många saker.
Han kan mata in en massa saker för att försöka att lura din webbläsare till ändå
kör detta script.
Vad du vill göra är att inte bara titta för manus, men leta efter allt
som kan vara skadliga.
Och htmlspecialchars kommer att göra det för dig, så att du inte behöver
att oroa sig för det.
Men försök inte att göra själv sorts med din egen kod.
Är alla klara över XSS?
>> OK.
Låt oss gå till SQL-injektion.
Så SQL-injektion är förmodligen den nummer ett sårbarhet
på olika webbplatser.
Jag menar, ett bra exempel -
Jag bara forskar längst för denna sak.
Och jag hittade den här härliga artikeln, där Jag såg att Harvard har åsidosatts,
var hackad.
Och jag undrar, ja, hur skulle de göra det?
Harvard är det mest fantastiska, mest säkra universitet någonsin.
Rätt?
Jo, för att bryta mot servrarna, hackarna använde en
teknik som kallas SQL-injektion.
>> Så detta händer på en daglig basis.
Folk glömmer att ta hänsyn för SQL-injektion.
Harvard gör.
Jag tror att det står här, Princeton, Stanford, Cornell.
Så hur gör vi - så vad är det här SQL injektion som är att föra alla dessa
människor ner?
OK.
Så SQL är ett programmeringsspråk som vi använder för att komma åt databaser.
Vad vi gör är att vi väljer -
så vad det läser just nu är att välja allt från bordet.
>> SQL, ändrar det i dessa databaser som har tabeller full av information.
Så väljer allt från användare där namnet är användarnamnet.
Rätt?
Enkelt nog.
Idén om SQL-injektion är att vi sätta några skadlig kod som skulle
lura servern till att köra något annorlunda än vad den
ursprungligen kördes.
Så låt oss säga för användarnamn, vi sätter in eller 1 är lika med 1.
Så vi satte in eller 1 är lika med 1.
Hur det kommer att läsa nu kommer att välja från användare, allt från
användare - det är allt -
där namn är användarnamn, men användarnamn är eller 1 är lika med 1.
>> Så heter ingenting eller 1 är lika med 1.
1 är lika med 1 är alltid sant.
Så det här kommer alltid att returnera information från användarna.
OK.
Vi behöver inte ha rätt användarnamn.
Vi kan bara ha något som vi vill ha, och det kommer att returnera information
som vi behöver.
Låt oss titta på ett annat exempel.
>> Om vi ​​väljer allt från användare, där namn är DROP TABLE användare -
så vad tror du att detta kommer att göra om jag sätter in användarnamnet
som DROP TABLE användare?
Någon som har en idé?
Ja.
>> PUBLIK: Det kommer att berätta det att dumpa alla tabeller.
>> LUCIANO Arango: Det kommer att berätta för oss att dumpa allt på webbplatsen,
allt i databasen.
Och vad folk använder detta för - så Jag ska visa er.
Jag inaktive släppa tabellerna för jag ville inte att du
killar att släppa mina tabeller.
Låt oss ta en titt på detta.
Så här drar helt enkelt upp den information för en viss person.
Så hur vet vi om det är påverkas av SQL-injektion.
Vi ska checka snabbt om vi kan sätta något -
låt mig kopiera koden.
Jag ska gå över den i en sekund.
Jag ska sätta rot och 1 är lika med 1.
>> Denna rätt här, detta procenttecken 23 -
vad det egentligen är, om jag titta här på -
hur HTML tar i siffror, om du ta en titt på när jag sätter i ett utrymme
här - om jag skulle rymd något här, ändras den till en procent 2.
Har ni ser detta just här när jag sätter i ett rum?
Så det fungerar är att du bara kan skicka ASCII-värden via HTML.
Så som det ersätter, till exempel, ett utrymme med procent 20.
Jag vet inte om ni har sett det förut.
>> Den ersätter en hashtag med procent 23.
Vi behöver en hashtag i slutet av eller uttalande så att vi kan tala om
databas för att glömma att kommentera ut denna sista semikolon i slutet.
Vi vill att det ska inte tänka på det.
Vi vill bara att den ska köras allt att vi i förväg och
kommentera det ut.
Låt oss ta en titt på det.
>> Så om jag skulle sätta något fel - låt oss säga till exempel, satte jag två jämlikar
1, inte ger mig någonting.
När jag satte in 1 är lika med 1, och det gör tillbaka något, säger mig detta att
detta är utsatta för en SQL-injektion.
Jag vet nu att vad Jag satte efter detta -
och till exempel, DROP BORD eller något liknande
kommer definitivt att fungera.
Jag vet att det är sårbart för SQL-injektion eftersom jag vet att
under huven, det låter mig göra 1 är lika med 1 sak.
OK?
>> Och om vi tittar på de andra, nummer två och nummer tre, är det
kommer att göra lite mer av kontroll under
huven på vad det är.
Så vem som helst göra det möjligt för droppe något ännu eller provat?
Har ni sorts få SQL än?
Eftersom jag vet att ni inte har sett det än, så det är typ av
förvirrande för er.
Låt oss ta en titt.
Så vad är sätt att förebygga SQLI?
OK.
Så det här är verkligen viktigt att du killar definitivt vill undvika
detta i dina webbplatser.
>> Om inte, är alla dina vänner att gå till göra narr av dig när de släpper alla
dina tabeller.
Så tanken är att du reparerar SQL på ett visst sätt, medan du matchar
vad användaren ingångar med en viss sträng.
Så hur detta fungerar är du förbereda databasen.
Du väljer namn, färg och kalorier från en databas som heter frukt.
Och sedan när kalorier är mindre än, och vi sätter ett frågetecken där
säger vi ska ingång något i en sekund.
>> Och färg är lika, och vi ställde en fråga märke som säger att vi ska
input något i en andra också.
OK?
Och då kan vi köra det, att sätta i 150 och rött.
Och detta kommer att kontrollera att Se till att dessa två -
denna samling kommer att kontrollera att dessa två är ett heltal och
att detta är en sträng.
Sedan går vi, och vi hämtar allt, sätter vi den i rött.
Det betyder att vi hämta alla.
Det betyder att vi faktiskt köra SQL uttalande och lägger tillbaka den i rött.
Här gör vi samma sak, men vi göra samma sak för gult.
Och vi hämta alla.
>> Och på detta sätt kan vi förhindra att användaren från att kunna ingång något
det är inte vad vi specificerat, en sträng eller ett heltal, till exempel.
Jag talade tidigare om förlita sig på andra.
När ni startar ditt projekt, du är absolut kommer att använda
bootstrap eller något liknande.
Har ni någonsin använt Wordpress?
Förmodligen ni har använt Word troligast.
Så problemet med hjälp av andras saker -
Jag ska bara Google riktigt snabbt Wordpress sårbarhet.
>> Om jag drar upp det just nu -
Jag gjorde bokstavligen två sekunders Google.
Vi kan se att Wordpress -
detta är daterat i september '12.
26 uppdateras.
Standardkonfigurationen för Wordpress före 3.6 inte hindrar dessa
vissa uppladdade, vilket kan göra det lättare för
cross-site scripting-attacker.
Så en snabb historia, när vi arbetade med - så jag var, på sommaren, arbetar en
praktikplats.
Och vi arbetade med slags som en stor kreditkortsföretag.
>> Och de är beroende av något som kallas -
Jag vet inte om ni någonsin spelat med en produkt som heter Joomla.
Joomla är en produkt som används för att kontroll - slags liknar
Wordpress, som används för att bygga webbplatser.
Så de hade deras hemsida arbetar med Joomla.
Detta är faktiskt ett kreditkort företag i Colombia.
Jag tar dig till deras hemsida riktigt snabbt.
>> Så de använde Joomla.
Och de hade inte uppdaterat Joomla till det senaste tillskottet.
Och så när vi tar en titt på deras kod, kunde vi faktiskt
gå in sin kod och stjäla alla kreditkortsinformation som de hade,
alla kreditkortsnummer, namn, adresser.
Och det var bara -
och deras kod var helt bra.
De hade stor kod.
Det var allt säkerhet.
De kontrollerade alla databaser.
De såg till cross-site skript var bra.
>> Men de använde något som inte var uppdateras, det var inte säker.
Och så som ledde dem till - så ni kommer definitivt att använda andra
människors kod, andras ramar för att bygga upp din webbplats.
Se till att de är säkra eftersom ibland är det inte du, den som
gör ett misstag.
Men någon annan gör ett misstag, och då du faller ner på grund av det.
>> Lösenord och PII.
So lösenord.
OK.
Låt oss ta en titt på lösenord riktigt snabbt.
OK.
Tala om för mig att alla använder säker -
Jag hoppas alla här använder säkra lösenord.
Jag bara låta det in som ett antagande.
Så ni är definitivt kommer att lagra lösenord för dina webbplatser.
Du kommer att göra något liknande en inloggning eller något liknande.
Det viktiga är att inte förvara lösenord i klartext.
Detta är oerhört viktigt.
Du vill inte att lagra en lösenord i klartext.
>> Och du definitivt inte verkligen vill att förvara den i ett ett sätt hash.
Så vad en one way hash är att när du generera ett ord, när du sätter denna
ord till en hash-funktion, kommer det generera tillbaka något slags kryptisk
meddelande eller kryptiska uppsättning nycklar.
Jag ska visa dig ett exempel.
Jag ska hash de ord password1.
Så MD5-hash kommer att återvända mig något slags konstig information.
>> Problemet är att människor där ute att vilja gå in på webbplatser har
redan räknat ut sorterings av samtliga MD5-hashar.
Vad de gjorde är att de satte sig på sin datorer, och de hashas varje
enda möjliga ord där ute tills de fick typ av vad det här är.
Om jag skulle slå upp detta -
Jag tog denna hash.
Om jag får det här hash från -
om jag går till en webbplats, och jag tycker denna hash för att jag får till
databaser, och jag slå upp det, någon redan listat ut det för mig.
>> Yeah.
Så att folk satte sig ner, och vad md5 hash som du sätter in, kommer de att
tillbaka till dig något det är ett ord.
Om jag hash annat ord, som -
Jag vet inte -
trees2.
Jag vill inte bli besviken av mina Google-sökningar.
Där är det, trees2.
Så en hel del webbplatser fortfarande använda md5 hash.
De säger, åh, det är säkert.
Vi kommer inte att lagra i klartext.
Vi har denna md5 hash.
Och allt jag behöver göra är att bara Googla numret.
>> Jag behöver inte ens att beräkna själv.
Jag kan bara Google det, och någon redan gjorde det för mig.
Här är ett gäng av dem.
Här är ett gäng lösenord.
Så definitivt inte använder md5 hash, eftersom allt du behöver
göra är Google det.
Så vad vill du vill använda i stället?
OK.
Något som kallas saltning.
Så vad saltning är -
tror ni ihåg när vi var talar om slump -
Jag är inte säker på vad pset det var -
var det pset där eller fyra?
>> Vi pratade om att hitta nålen i höstacken.
Och i pset, sa det att man kunde faktiskt räkna ut vad random
genererar för att någon har redan sprang slumpmässiga en miljon gånger och bara
sorts bildade vad de genererar.
Vad du vill göra är att sätta på en ingång.
Så det är vad saltning sorts är.
De har redan listat ut vad saltning återgår för varje arbete.
>> Så vad saltning gör är du sätter i ett salt.
Du sätter in ett visst ord.
Och det kommer att hash ordet beroende på vad du lägger in här.
Så om jag hash lösenord en med detta mening, det kommer att hash
annorlunda om jag hash password1 med en annan mening.
Det ger det slags någonstans att start för hashing att börja.
Så det är mycket svårare att beräkna, men du kan fortfarande beräkna det, särskilt
om du använder en dålig salt.
>> Folk har redan också räknat ut gemensamma salter och räknat ut
vad det är.
Random salter är mycket bättre, men det bästa sättet är att använda
något som kallas krypta.
Och vad kryptan kan du gör - så dessa funktioner är
redan byggt för dig.
Många glömmer att, eller De har glömt att använda den.
Men om jag ser upp crypt PHP, crypt redan returnerar en hash-sträng för mig.
Och det faktiskt salter det många gånger och hashar det många gånger.
>> Så vi behöver inte göra det här.
Så allt du behöver göra är skicka in den i kryptan.
Och det kommer att skapa en stor hash utan att du behöver oroa dig för salt
eller vad som helst.
För om du skulle salt det, har du att komma ihåg vad salt du använt
för om inte, kan du inte få din lösenord tillbaka utan
salt som du använt.
OK.
>> Och även personlig identifierbar information.
Så social trygghet, kreditkort - det är ganska uppenbart.
Men ibland glömmer hur det verk är, hur mycket information som gör att du
faktiskt måste hitta någon enda person?
Någon gjorde en studie om detta en väg tillbaka.
Och det var som om du har ett fullständigt namn, kan du inte hitta
någon som lätt.
Men om du har ett fullständigt namn och deras födelsedatum?
Är det tillräckligt för att identifiera någon specifikt?
>> Vad händer om du har deras namn och gatuadress som de lever på?
Är det tillräckligt för att hitta någon?
Och det är då de ifrågasätter, vad är personlig information, och
vad ska du oroa dig inte ge bort?
Om du ger bort personlig identifierbar information som någon ger dig,
du skulle kunna bli stämd.
Och vi vill definitivt inte det.
>> Så när du lägger din webbplats ut, och du har en riktigt cool
design, förhoppningsvis du gjort en fantastisk slutprojekt.
Någon du slags vill lägga den där ute.
Du vill vara säker på att vad du tar från användaren, om det är
personlig information, du vill se till att du är riktigt
försiktig med det.
>> Shell injektion.
OK.
Shell injektion gör att inkräktare att få tillgång till din faktiska kommandorad
på din server.
Och så han kan köra kod att du inte kan kontrollera.
Låt oss ta ett exempel på detta vacker sträng här.
Om vi ​​går in på webbplatsen igen, jag är gå in kod injektion.
Vad detta innebär är -
det är också vad vi var titta på tidigare.
Vi ska låta användaren sätta i vad han vill, och det kommer att skriva ut
vad du vill.
>> Så jag kommer att sätta ett samtal.
Vad detta innebär är -
Det börjar med att sammanfoga.
Så det kommer att låta mig köra vad som helst kommandot personens igång
före och mitt kommando.
Och jag kör ett kommando-system.
Och de sista strängar är - kom ihåg vad jag pratade med er om,
medan du måste koda den i en URL-metod.
Om jag kör det här nu -
Jag ska visa dig hit -
så ser du att jag slutade upp kör ett kommando.
>> Detta är faktiskt själva servern att min hemsida är igång på.
Så vi inte vill ha det, eftersom jag kan köra -
denna server är inte min.
Så jag vill inte förstöra hans syster, Marcus server.
Men du kan köra flera kommandon som är farliga.
Och potentiellt, kan du ta bort filer, ta bort kataloger.
Jag kan ta bort en viss katalog om Jag ville, men jag vill inte
att göra det till Marcus.
Han är en trevlig kille.
Han lät mig låna hans server.
Så jag ska låta honom av på bra.
>> Så vad vi inte vill använda - vi gör inte vill använda eval eller systemet.
Eval eller systemet tillåter oss att göra dessa systemanrop.
Eval sätt utvärdera.
Systemet innebär vad jag sprang.
Det drivs något i systemet.
Men vi kan förbjuda dessa saker i PHP, så att vi inte använder dem.
Och filuppladdning.
Jag skulle göra en fantastisk sak med filuppladdning.
Men som jag sa till er, min fil uppladdnings sak fungerar inte.
Om jag skulle ladda upp en fil just nu -
om jag skulle ladda upp en fil, och det är en bild -
du har en uppladdning sak det är en bild.
Det är bra.
Ingenting händer.
>> Men om du har en uppladdning fil, för exempel, och användaren faktiskt uppladdningar
en PHP-fil eller en exe-fil eller något så där, då du kunde potentiellt
har ett problem.
Detta fungerade tidigare.
Tyvärr för mig, det är inte fungerar längre.
Om jag till exempel ladda upp denna fil, jag är att inte få tillåtelse att ladda upp
filen på grund av att servern inte är mina.
Så killen är riktigt smart.
>> Så vi vill inte -
Jag ska visa er -
OK, det är några riktigt coola verktyg.
Så dessa -
gå in i - om ni har Firefox - förhoppningsvis du gör.
Det finns två tillägg som kallas SQL Inject Jag och Cross-Site Script mig.
De öppnar upp så liten sida fälten på sidan.
Och om jag skulle gå till CS60 till exempel -
så vad den gör är det ser ut för alla de former som -
förhoppningsvis kommer jag inte att få i trubbel för detta.
>> Men OK.
Här är stiftet systemet.
Så när jag börjar leta efter hål i systemet, är det första jag gör
öppna upp denna vackra lilla verktyget på sidan.
Och jag kommer att testa formulär med auto-attacker.
Och så vad detta innebär är att det kommer sakta öppna upp en massa webbläsare.
Här är ett gäng webbläsare.
Och det försöker varje kombination av cross-site scripting
att det möjligen är, om du ser på sidan.
>> Och det kommer att ge mig ett resultat typ av vad svaret är.
Alla pass.
Självklart, de alla passerar.
Jag menar, de är riktigt smarta folk upp där.
Men om jag skulle köra -
Jag har haft gånger tidigare när jag kör det här på elevernas slutprojekt.
Jag kör helt enkelt SQL Inject Me med alla olika attacker.
Och det försöker SQL injicera detta stift server.
Så om vi rulla ner, för Exempelvis står det -
det är bra om den återvänder.
>> Så det testade några vissa värden.
Och servern return kod som var negativt.
Ta bort tillfälligt.
Detta är bra.
Den försöker alla dessa tester.
Så du kan helt enkelt köra -
Jag önskar att jag kunde hitta en hemsida verklig snabb som skulle låta mig -
kanske CS50 butiken.
>> Wow, detta kommer att tar alldeles för lång tid.
Jag låter det första testet inte avsluta rätt.
Så det klagar.
Så dessa tre saker.
Dessa verktyg är gratis.
Du kan ladda ner dem och köra dem på din webbplats, och det kommer att berätta om
du har cross-site scripting, om du har SQL, om du har
något liknande.
Jag sorts stöka.
>> Vad är viktigt -
OK, så lita aldrig på användaren.
Oavsett användaren matar in till dig, göra att du sanera det, rengör du den,
du kontrollera om rätt saker, att det ger dig vad du
vill att han ska ge dig.
Alltid vara uppdaterad om vad ramar att du faktiskt använder.
Om du använder något som bootstrap -
Jag vet att ni kommer att använda bootstrap eftersom han kommer att gå
över detta snart i klassen -
och Wordpress eller något liknande, normalt detta skulle kunna hacka.
>> Och då du inte ens vet.
Du är bara att köra din webbplats.
Och det är helt säkert.
Och du går ner.
Så jag fiskar riktigt tidigt.
Men jag vill tacka Pentest Labs.
Jag ska visa er något heter Pentest Labs.
Om ni verkligen är intresserade av vad säkerhet egentligen är, det finns en
hemsida som heter Pentest Labs om ni går till det just nu.
Oh, ja, det är inte det.
Jag kommer bara att köra det så här.
Google säger mig svaret.
>> OK.
Och det lär använda dig - så det säger, lära web penetration
testa på rätt sätt.
Den lär dig -
förhoppningsvis, du är en etisk person.
Men det lär dig hur du kan titta på hur du kan få inne webbplatser.
Och om du lär dig hur du kan komma in webbplatser, kan du lära dig att
skydda dig från att bli inuti webbplatser.
Låt mig zooma in, därför kanske ni inte tittar på denna rätt.
>> Från SQL-injektion skal, så typ av hur jag kan få från SQL
injektion skal.
Och du ladda ner denna virtuella maskin.
Och den virtuella maskinen redan kommer med den webbplats som du är
kommer att prova på.
Du ladda ner PDF.
Och det kommer att visa dig rad för rad vad du måste göra, vad du kolla.
Detta är vad en angripare faktiskt gör för att komma in en webbplats.
>> Och en del av det här är komplicerat.
Jag önskar att jag kunde gå över mer saker med er.
Men jag är rädd att ni har inte riktigt -
detta är vad jag gick över med ni, webbtester
för penetrationstester.
Vet inte riktigt vad SQL är och vad -
Carl Jackson seminarium är fantastisk också.
Ni vet inte sorterar av vad detta är.
Men om du går till denna webbplats, och du ladda ner dessa tutorials och dessa
PDF-filer, kan du ta en titt på sorts vad det gäller säkerhet verkligen
i penetrationstester, se hur du kan komma in webbplatser och skydda
dig från det.
>> Så om jag gör en super snabb överblick, det ska förhindra cross-site scripting.
Du vill använda htmlspecialchars varje gång användaren ingångar något.
Förhindra SQL-injektion.
Om du gör det, är du redan bättre än Harvard var
när de fick brutit.
Och se till att dina lösenord inte i klartext.
Se till att du inte bara ett sätt hash dem men att du använder krypta, PHP
funktion som jag visade er.
På så sätt, bör du vara bra.
>> Dessutom, om dina vänner kan du, kör SQL Inject Me på sina webbplatser.
Kör cross-site scripting på sina webbplatser.
Och du kommer att se en hel del av dessa webbplatser har en ton av sårbarheter.
Det är otroligt hur mycket folk glömmer att desinficera sina databaser eller för att göra
säker på vad personens inmatning är inte script.
OK.
Jag slags slutade riktigt tidigt.
Men om någon har några frågor om vad som helst, kan du skjuta mig en fråga.
Yeah.
Gå, gå.
>> PUBLIK: Jag vill bara fråga, kan du förklara hur filen
ladda upp exakt verk.
>> LUCIANO Arango: Ja.
Så låt mig visa dig den filen ladda upp riktigt snabbt.
Så filuppladdning -
problemet wit den filuppladdning just nu är det -
Jag ska öppna koden så ni se koden bakom kulisserna.
Och det är att ladda upp.
Här är en kod för filuppladdare.
>> Vi försöker att gå in i denna katalog över här.
Och vi försöker, när vi mata in fil, isset fil - så när det finns en
fil i filer, den bilden, då Vi försöker att flytta den hit.
Vi tar tag i filen hit.
Metoden är POST, typ, bild, fil.
Och vi skickar filen.
Och sedan när vi får det, så när filen har en bild, vi försöker att skicka det
till den här katalogen.
>> Problemet är att webbplatsen inte är låta mig gå till denna katalog,
eftersom den inte vill att jag ska gå tillbaka.
Det är inte att jag ska gå -
Jag måste gå - så här är att ladda upp.
Här är bilderna.
Jag måste gå hela vägen tillbaka till början och lägga den i det och då
gå och lägg den i katalogen.
Så om jag kör ett terminalfönster, och jag ville flytta en fil -
[OHÖRBAR]
kan se det.
Om jag ville flytta en fil, har jag att sätta filnamnet och sedan
fullständig sökväg Jag vill skicka det till.
>> Och då servern inte Att låta mig gå tillbaka.
Och så det är inte att låta mig att komma till den filen.
Men normalt -
så det finns en kod för ladda upp en fil.
Så normalt vad som kommer att hända är att den personen är inte kontrollera om min fil
slutar med. jpeg, så jag skulle vilja kolla.
Låt mig öppna ett exempel för riktigt snabbt.
>> OK.
Denna person rätt -
så exempel två kontrollerar om preg_match -
här är det här borta -
att se till att avslutas med PHP, vilket är bra.
Detta är bra.
Men det finns en riktigt stor problem med detta.
Detta är bra.
Men om jag skulle lägga en fil som heter myfavoritepicture.php.jpeg, jag kunde
fortfarande potentiellt bli av med jpeg och kör it.k Att PHP är farligt.
Du vill inte att personen ska kunna för att köra kod på din hemsida.
>> Men sedan. Jpeg låter det passera.
Tanken är vad du verkligen vill göra inte ta filer, A. Men, OK, vad
du verkligen vill göra är att se till att du läst över hela världen.
Och det finns ingenting. Php på det.
Det finns ingen. Php i Hela filnamn.
>> PUBLIK: Men du kunde sätta. jpeg på slutet.
Servrarna fortfarande köra koden.
>> LUCIANO Arango: Nej, det gör det inte genomföras i början.
Du måste gå tillbaka och försök för att se om du kan -
>> PUBLIK: Så vi måste -
OK, bara en annan uppsättning som innebär -
>> LUCIANO Arango: Ja.
>> PUBLIK: OK.
>> LUCIANO Arango: Ja.
OK.
Fler frågor?
OK.
Jag kommer att lämna detta upp och sortera av försök att se om ni kan -
de andra är lite mer komplicerade, eftersom de kräver mycket
mer kunskaper om SQL än bara början kunskap om webb SQL är och
vad JavaScript är.
Men jag ska försöka hålla upp detta, och förhoppningsvis ni kommer att lära
om detta och försöka ta en titt på vad du kan göra och hur många exempel
du kan få igenom.
>> Någon som har någon annan frågor om det?
Varsågod.
Ja, skjuta, skjuta.
Ja, gå vidare.
Varsågod.
>> PUBLIK: OK.
Jag hörde om hur Magiska citat är inte tillräckligt säker.
>> LUCIANO Arango: Vad -
Magiska citat?
>> PUBLIK: Ja.
Så det tillför - så när du matar något, alltid lägger det citat.
>> LUCIANO Arango: Ja.
Yeah.
OK.
>> PUBLIK: Och sedan jag fast det fungerade, men då jag sökte upp den.
Och det sa att det är inte bra.
Men jag är inte säker på varför.
>> LUCIANO Arango: Ja.
>> PUBLIK: Använd inte Magiska Quotes, eftersom det inte är säkert.
>> LUCIANO Arango: OK.
Så Magiska citat är när du sätter SQL och det redan lägger offert för dig.
>> PUBLIK: Det lägger alltid citat kring vad du lägger i.
>> LUCIANO Arango: Ja.
Så problemet med detta är att -
Jag tar en titt på -
>> PUBLIK: Hur fungerar det förvärvar SQL-satsen?
Eller jag antar att det kan vara liknande citat väljer.
>> LUCIANO Arango: Ja, du behöver bra citat för SQL.
>> PUBLIK: Nej, men servern gör det åt dig.
>> LUCIANO Arango: Dessa små citat just här, dessa små citat?
>> PUBLIK: Ja.
>> LUCIANO Arango: Ja.
Problemet är att du kan kommentera ut den sista -
OK, så vad jag kan göra är att jag kan kommentera ut - så låt oss ta en titt på - låt mig
öppna en textredigeringsfilen.
Låt mig bara redigera här direkt.
OK.
Kan ni se det klart?
Vad jag kan göra är att jag kan kommentera ut den sista.
Detta kommer att kommentera ut den sista.
Och så kommer jag lägga en här, satte alla skadliga saker här.
>> Så användaren faktiskt mata in, eller hur?
Användaren är inte mata saker, eller hur?
Detta är vad jag ska inmatning som den person som försöker komma in.
Jag kommer att sätta in -
det är en citattecken.
Det är bara snirklig av misstag.
Och sedan vad koden är ska göra -
förlåt, jag ska ta ut det.
Vad koden kommer att göra är det kommer att lägga till den första
citattecken här.
Och det kommer att lägga till den sista citattecken också.
>> Och det kommer också att lägga till sist, sista citattecken.
Men jag kommentera dessa citat markerar ut, så att de inte kör.
Och jag avslutar detta citat markera hit.
Förstår du?
Är du förlorat?
Jag kan kommentera det sista citatet märke, och ta hand om den
första citattecknet.
>> PUBLIK: Och bara yta den första.
>> LUCIANO Arango: Ja.
Och bara avsluta den första.
Ja, det stämmer.
Det är vad jag kan göra.
Yeah.
Alla andra frågor som det?
Det är en stor fråga.
Nej, ja, kanske.
Förhoppningsvis kommer ni sorts göra mer känsla när du studerar SQL och
sånt.
Men se till att du -
hålla dessa verktyg i klockan.
Tyvärr, de här verktygen över här.
Dessa verktyg är stora.
Om någon har några frågor, Du kan också maila mig.
Det här är min normala e-post.
Och det här är mitt arbete e-post, vilket är när jag arbetar på SEAS.
>> OK, tack.
Tack, killar.
Du är bra att gå.
Du behöver inte bo här.
Inte klappa.
Det är konstigt.
OK, tack, grabbar.