DAVID J. MALAN: Detta är CS50, och detta är början på vecka 10. Ni minns kanske att vi har visat på skärmen en 3D-skrivare, som är denna enhet som tar spolar av plast och sedan sprutar det genom upphettning upp och smälta det så att vi kan då bilda Chang armé av elefanter, till exempel. Så vid Leverett House, Men på senare tid, jag chatta med en av dina klasskamrater och en vän till Chang heter Michelle, som faktiskt internerades denna andra företag det senaste året som har en annan teknik för att faktiskt skapa tredimensionella objekt, gillar denna lilla lilla elefanten här. I synnerhet hur det fungerar är att det är ett exempel på något kallas stereolitografi, varvid det är denna bassäng av harts eller vätska, och sedan en laser slår att vätska, och gradvis, varvid anordningen hissar och hissar och lyfter sak att du skriver ut, som en elefant, så att vätska som blir fast. Och resultatet, faktiskt, är något som är mycket mer robust än vissa av plasten giveaways några av er kan ha haft. Och vad Chang vänligt gjorde för oss här var gjorde en time-lapse använder fotografier under loppet av en timme eller mer, förmodligen, för att producera den här killen här. Skulle någon som aldrig kommit upp inför vilja komma hit Start på den här videon? Låt mig gå med, om det inte hur. Kom upp. Okej. Och du är? Lukas: Jag heter Lukas [OHÖRBAR]. DAVID J. MALAN: Hej, Luke. TREVLIGT ATT TRÄFFAS. Lukas: Trevligt att träffas. PUBLIK: Han kör för UC. DAVID J. MALAN: Jag vet, vi försöker att inte främja. Okej, så Luke, alla du måste göra här i CS50 träffas på mellanslagstangenten att skriva ut denna elefant. [VIDEOAVSPELNING] - [MACHINE snurr] - [CRASH] - [BOM] - [CRASH] [END VIDEOAVSPELNING] DAVID J. MALAN: Så det är precis hur det är att 3D-print. Och här är din elefant. Tack för volontärarbete. Okej. Så återigen, per specifikationen för lärdomsprovet, denna hårdvara som är tillgängliga för er killar är, av någon anledning, projektet har några skärnings av mjukvara och hårdvara, inse att dessa är nu resurser. Jag ville ta en stund att röra på en Crimson artikel som kom ut sent i går kväll, som skulle meddela att den här mannen här, David Johnson, som har varit den ledande handledare för Ec 10 under ganska lång tid, lämnar Harvard vid slutet av läsåret. Och jag ville bara ta en stund, ärligt talat, tacka David framför CS50. Han har varit en mentor för sorterar till oss genom åren. Och jag tycker vi, CS50, har snarare vuxit upp med Ec 10 in här, eftersom de är rätt framför oss. Och han och hela laget i Ec 10 har varit underbart nådig, ärligt talat, som vi släpa i all vår utrustning varje vecka, och år sedan, som en stor del av råd som vi var nyfiken på hur de fungerar Ec 10. Så vårt tack och beundran för David Johnson. [Applåder] Nu unrelatedly, så slutet är verkligen nära. Vi är här i vecka 10. Och vi har bara bara en några formella veckor här i klassen vänster, följt genom ett par av händelser. Så för att ge dig en känsla för vad som är vid horisonten, är vi här i dag. Denna onsdag, återkallelse, Vi kommer att ha en gästföreläsning av ingen mindre än Microsofts egen Steve Ballmer. Om du ännu inte har gått till cs50.harvard.edu/register, göra det, eftersom rymden kommer att vara begränsade. Och de kommer att kontrollera ID vid dörren i dag. Om du inte var här förra veckan, jag trodde jag skulle reta dig med ett annorlunda utseende på Steve och den spänning som väntar på oss på onsdag. [VIDEOAVSPELNING] -Passion. -Vi Kommer att vara hardcore-- särskilt allvarliga. -Innovator. -Bill Sa, du fattar inte. Vi ska sätta en dator på varje skrivbord och i varje hem, som blev mottot för företaget. Jag svär, Bill uppfann det den kvällen för att verkligen ge mig en del av visionen om varför jag skulle säga ja. Jag har aldrig sett tillbaka, verkligen, efter detta. -Färsk Av college, han gick med i en spirande start och hjälpte den att växa till ett av USA: s mest framgångsrika företag någonsin. Livet i och affärer lärdomar på vägen låt honom tillbaka till sin barndom passion och kärlek. Och dessa erfarenheter har förberett honom för hans nästa utmaning i livet. -Inget Får i vår way-- boom! Håll kommande hardcore! Gå Clippersna! -Det Här är Steve Ballmer, "I mina egna ord." [END VIDEOAVSPELNING] David J. MALAN: --Denna Onsdag till CS50. Bege igen till denna URL här. När det gäller vad annat är vid horisonten, nästa vecka, ingen föreläsning på måndag. Men vi kommer att följa det med frågesport ett på onsdag. Gå till CS50 hemsida för mer information på människor, platser och tider för alla de olika proctoring logistik och liknande, liksom om översyn sessioner som är förestående. Och sedan, slutligen, på måndagen, dagen innan veckan av Thanksgiving brytning, inser att det kommer att bli vår sista föreläsning. Vi kommer att tjäna tårta och en stor del spänning, hoppas vi. Nu, ett par andra uppdateringar. Tänk på att statusen Rapporten, som är egentligen bara tänkt att vara en tillfällig interaktion med din TF att stolt konstatera bara hur långt tillsammans med din slutprojekt du är, eller åtminstone som en sanity Kontrollera att du bör närma sig att pekar kort därefter. Den hackathon följer att. Inse hackathon inte är en möjlighet att starta din slutgiltiga projektet, men är tänkt att vara en möjlighet att vara i mitten av eller i riktning mot i slutet av din slutgiltiga projektet, med genomförandet på grund av ett fåtal dagar senare, följt av CS50 rättvis. Nu CS50 produktion lag, ett par år sedan, sätta ihop en teaser för CS50 rättvist att vi trodde vi skulle visa er i dag, eftersom de har jobbat hårt om en prequel till det, en ny video att vi ska avsluta idag med. Men här är vad som väntar dig för årets CS50 rättvist. [VIDEOAVSPELNING] - [CELL telefonen ringer] [MUSIC "tema från Mission: Impossible"] [END VIDEOAVSPELNING] DAVID J. MALAN: Så det är precis så Vi stänger slutgiltiga projektansökningar. Ett par nu teasers-- om du skulle vilja gå med Nick här för lunch, som vanligt, detta Fredag, bege dig till denna URL här. Dessutom, om du vill ha att gå med Nick eller den här Nick eller det Allison eller någon medlemmar av CS50 team, inser att, inom kort efter termins slut, CS50 kommer redan att rekrytera för nästa års lag, för certifikatutfärdare, TF, formgivare, producenter, forskare och andra positioner att här verkar CS50 både i framför och bakom kulisserna. Så om detta skulle kunna vara av intresse till dig, gå till denna URL här. Och eleverna mer bekväm, mindre bekväm, och någonstans i mellan likadana är alla välkomna och uppmuntras att söka. Så det var perfekt timing att, nej skämt, i morse, när jag vaknade, Jag hade detta här skräppost i min inkorg. Det faktiskt glidit genom Gmails spamfilter på något sätt och hamnade i min faktiska inkorg. Och den säger, "Kära brevlåda användaren, du är närvarande uppgraderas till 4 gigabyte utrymme. Logga in på ditt konto i syfte att validera E-space. " Och sedan finns det fina blå lockande länk där för att klicka på för lärare och personal, som sedan ledde mig till en härligt legitim sida, vilket bad mig att ge dem mitt namn och e-postadress och, naturligtvis, lösenord för att validera vem jag är och så vidare. Men naturligtvis är så alltid är fallet, du kommer till denna målsida, och naturligtvis finns det åtminstone ett stavfel, vilket verkar vara spiken i kistan för någon av dessa bedrägerier. Och vi kommer lägga upp, kanske någon annan länkar till dessa typer av skärmdumpar i framtiden. Men förhoppningsvis, de flesta i detta rum har inte clicked-- eller även om du har klickat sådana förbindelser som detta, du har inte gått så långt som att fylla i de blanketter och så vidare. I själva verket är det OK om du har. Vi ska försöka fixa det i dag, därför att, ja, är dagens konversation om säkerhet. Och faktiskt, en av målen för CS50 inte så mycket att lära dig CE eller PHP eller Javascript eller SQL eller någon av dessa underliggande genomförandet detaljer. Men det är att ge dig som människor att bara fatta smartare beslut som det hänför sig till tekniken ned väg så att, oavsett om du är ingenjör eller humanist eller vetenskapsman eller någon annan roll, du gör välgrundade beslut om din egen datoranvändningen, eller om du är i en beslutsfattande ställning, i politiken, i synnerhet, du gör mycket, mycket bättre beslut än en Många människor i dag har varit. Och vi kommer att göra detta genom att sätt några exempel. Först var jag ganska förvånad nyligen för att upptäcka följande. Så lösenord, naturligtvis, är vad de flesta av oss använda för att skydda vår data-- e-post, chatt, och alla typer av resurser som. Och bara genom en awkward-- Visa inte av händer, men generad utseende av skam, Hur många av er använder samma lösenord i en mängd olika webbplatser? Åh, OK, så vi ska göra av händerna. OK, så en hel del av er gör. Den som gör det, bara varför? Och vad? Yeah? PUBLIK: Det är lätt att komma ihåg, eftersom du behöver inte komma ihåg [OHÖRBAR]. DAVID J. MALAN: Ja, det är lätt att komma ihåg. Det är en helt rimlig, rationellt beteende, även om risken du sätta dig själv vid i dessa fall är bara en eller flera av dessa webbplatser är utsatta för dataintrång eller osäker eller ditt lösenord är bara så jäkla att gissa, vem som helst kan lista ut det. Inte bara är en konto äventyras, men i teorin, någon konton du har på internet. Så jag vet att jag kan säga i dag, inte använda samma lösenord överallt, men det är mycket lättare sagt än gjort. Men det finns tekniker för mildra denna oro. Nu råkar jag, till exempel, till använda ett program som heter 1Password. En annan populär en kallas Lastpass. Och ett gäng CS50 personalen använder ett eller flera av dessa typer av verktyg. Och lång historia kort, en takeaway för idag borde vara, ja, du kan ha samma lösenord överallt, men det är mycket lätt att inte längre göra det. Till exempel, i dessa dagar, jag vet Kanske en av mina tiotals eller hundratals av lösenord. Alla mina andra lösenord är pseudo-slumpmässigt genereras av ett av dessa program här. Och i ett nötskal, och till och med om de flesta av dessa program tenderar att komma med en bit av en kostnad, du skulle installera ett program som detta, du sedan skulle lagra alla ditt användarnamn och lösenord insidan av detta program på din egen Mac eller PC eller whatnot, och då skulle det vara krypteras på din dator med vad som finns förhoppningsvis en särskilt långt lösenord. Så jag har en hel massa lösenord för enskilda webbplatser, och sedan har jag en riktigt långt lösenord som jag använder för att låsa upp alla de andra lösenord. Och vad är trevligt om program som detta är att när du besöker en webbplats som är ber om ditt användarnamn och lösenord, dessa dagar har jag inte skriver in mitt användarnamn och lösenord, eftersom, återigen, jag vet inte ens vad de flesta av mina lösenord är. Jag stället slog ett tangentbord genväg, vars resultat är att utlösa denna programvara för att be mig för min huvudlösenord. Jag skriver sedan att en stor lösenord i, och sedan webbläsaren fyller automatiskt i vad mitt lösenord är. Så riktigt, om du tar något annat från idag i form av lösenord, dessa är en mjukvara som är värda ladda ner eller investera i så att du kan åtminstone paus att särskild vana. Och om du är den typen som är med hjälp av post-it lappar eller like-- och oddsen är minst en av er är-- denna vana, även det räcker att säga, bör vara bruten. Nu råkade jag upptäcka, som en följd att använda programvaran, följande. Jag beställer en Ätbara arrangemang, denna korg med frukt, nyligen. Och jag slog min speciella tangentbord genväg för att logga in på webbplatsen. Och mjukvaran utlöste en pop-up som sagt, är du säker du vill att jag ska automatiskt lämna denna användarnamn och lösenord? Eftersom anslutningen är osäker. Anslutningen är inte via HTTPS, för säker, att använda det protokollet som kallas SSL, Secure Sockets Layer. Och faktiskt, om man tittar på Högst upp till vänster på denna webbplats, det är bara www.ediblearrangements.com, ingen HTTPS, vilket inte är så bra. Nu var jag curious-- kanske detta är bara en bugg i mjukvaran. Visst, vissa webbplats som detta att många av oss känner till åtminstone med hjälp av kryptering eller HTTPS-adresser för att logga in dig. Så jag blev lite nyfiken morse. Och jag fick ut min CS50 färdigheter, Jag öppnade Chrome Inspector. Det är inte ens mycket av en färdighet. Det är bara träffar rätt tangentbordet genväg för att öppna denna. Och här är ett stort fönster av Chromes Inspector. Men vad var egentligen en lite tragiskt och löjligt var dessa två rader här. Upp på toppen, märker webbadressen till som mitt användarnamn och lösenord lämnades in. Låt mig zooma in. Det var det här. Och allt detta är slags ointressant, med undantag för den sak hela vägen i vänster, som börjar med http: //. Och så då, OK, kanske de är bara att skicka mitt användarnamn, vilket är inte en så stor sak. Kanske mitt lösenord får skickas senare. Det skulle vara typ av en intressant design beslut. Men nix. Om du sedan tittar på begäran nyttolast, användarnamn och lösenord Jag sent-- och jag hånade dessa upp för slide-- faktiskt skickas i klartext. Så du går till denna webbplats och beställa en Ätbara arrangemang som detta, och faktiskt, tydligen, för allt detta gången jag har varit beställning från dem, ditt användarnamn och lösenord går över i klartext. Så ärligt talat, är det helt oacceptabelt. Och det är så trivialt att undvika saker så här som formgivaren av en webbplats och såsom programmeraren av en webbplats. Men takeaway här för oss som användare av webbplatser bara att inse att alla Det som krävs är för en dum konstruktion beslut, oförsvarliga designbeslut, så att nu, om du vet mitt lösenord är "Crimson" på detta hemsida, har du förmodligen precis fått in ett helt gäng andra webbplatser som jag nu har. Och det finns inte mycket av ett försvar mot det annat än vad Chang gjorde i morse. Han gick till Edible Arrangements, vilket ligger ner på gatan i Cambridge, och fysiskt köpte detta för oss. Det var mycket säkrare än använder hemsidan i detta fall. Men detaljerna att hålla utkik efter är faktiskt vad som finns i webbläsaren där uppe där. Men även det kan vara lite vilseledande. Så en annan intressant exempel och sätt att försvara mot this-- och faktiskt, låt oss gör det first-- sättet att försvara mot detta är en teknik att säkerhets människor skulle ring tvåfaktorsautentisering. Någon som vet vad lösningen problem som detta innebär? Vad är tvåfaktorsautentisering? Eller annorlunda uttryckt, hur många av er använder den? OK, så ett par blyga personer. Men ja. Jag såg din hand gå upp. Vad är tvåfaktorsautentisering? Publik: I grund och botten, förutom att skriva in ditt lösenord, Du har också en sekundär [OHÖRBAR] skickas via SMS till din telefon vid [OHÖRBAR]. DAVID J. MALAN: Exakt. Förutom vissa primära formen av autentisering, som ett lösenord, du bad om en sekundär faktor, som typiskt är något man måste fysiskt på dig, även om det kan vara något helt annat. Och det där är typiskt en mobiltelefon dessa dagar som du får skickade ett tillfälligt textmeddelande som säger "Ditt tillfälliga pass koden är 12345." Så utöver min lösenord "crimson", jag också måste skriva in vad som helst webbplatsen har textade mig. Eller om du har detta med en bank eller ett investeringskonto, du ibland har dessa små donglar som faktiskt har en pseudoslumpmässig talsgenerator inbyggd i dem, men både enheten och banken vet vad din första frö är så att de vet, även som lite kod på din lilla nyckelbricka marscherar framåt varje minut eller två, förändrade värderingar, så gör det värdeförändring på bankens server så att de på liknande sätt kan autentisera dig, inte bara med ditt lösenord, men med den tillfälliga koden. Nu kan du faktiskt göra det i Google. Och ärligt talat, är detta en god vana att komma in, speciellt om du använder Gmail hela tiden på en webbläsare. Om du går till denna URL här, vilket är i bilderna på nätet idag, och sedan klicka på 2 tvåstegsverifiering, samma faktiska sak där. Du blir ombedd att ge dem ditt mobilnummer. Och sedan, när du loggar in Gmail, du kommer att bli inte bara bad om ditt lösenord, men också för en lite kod som får skickas till telefonen temporärt. Och så länge du har cookies aktiverat och så länge du inte uttryckligen loggar ut, kommer du bara att ha att göra det en gång i en stund, som när du sitter ner vid en ny dator. Och uppsidan även här är, om du sitta ner på någon internet cafe stil dator eller bara en väns dator, även om den vännen uppsåt eller omedvetet har vissa tangentbord logger installerad på sin dator, så att allt du typ görs loggas, åtminstone att andra faktor, som tillfällig kod är kortlivad. Så han eller hon eller vem är äventyras datorn kan inte logga in dig senare, även om allt annat var utsatt eller till och med okrypterade helt. Facebook har även detta med den adressen här, där du kan klicka på Logga in godkännanden. Så även här, om du inte vill vänner att peta folk, Du vill inte bli peta på Facebook eller posta statusuppdateringar för dig, tvåfaktorsautentisering här är förmodligen en bra sak. Och så finns det här annan teknik helt och hållet, bara revision, vilket är ännu en bra sak för oss människor, Om två-faktor visar sig vara irriterande, vilket, Det kan visserligen, eller det är bara inte finns på någon hemsida, minimalt hålla ett öga på om och när du logga in på webbplatser, om de att du är en bra teknik också. Så Facebook ger dig också denna inloggnings anmälningar funktionen, varvid När som helst Facebook inser, hm, har David loggat in från någon dator eller telefon att vi aldrig har sett förut från en IP-adress som ser obekant, de kommer åtminstone att skicka ett e-post till vad e-postadress som du har angett, sade gör detta ser misstänksam? Om så är fallet, ändra ditt lösenord omedelbart. Och så där också, bara revision beteende även efter att du har varit äventyras, kan åtminstone avgränsa fönstret under som ni är sårbara. Okej, några frågor på det där hittills? Idag är dagen för att få alla din paranoia bekräftas eller förnekas. Det är oftast bekräftas, tyvärr. Yeah? PUBLIK: [OHÖRBAR] telefon, vad händer om din telefon går sönder, och då är det alltid svårt att verify-- David J. MALAN: Sant. PUBLIK: Eller om du är i en annan land, och de låter inte dig logga in eftersom [OHÖRBAR]. DAVID J. MALAN: Absolut. Och så dessa är det extra kostnader som kan uppstå. Det finns alltid detta tema av en kompromiss, trots allt. Och sedan, om du förlorar din telefon, om det går sönder, om du är utomlands, eller om du bara inte har en signal, som en 3G eller LTE-signal, du kanske inte egentligen kunna autentisera. Så återigen, dessa två är avvägningar. Och ibland kan det skapa en mycket arbete för dig som följd. Men det beror egentligen, då, på vad det förväntade priset till dig är något väsen äventyras helt och hållet. Så SSL, då är denna teknik som vi alla tar i regel för givet eller antar är där, även om det är uppenbarligen inte fallet. Och du kan fortfarande vilse människor, men även med detta. Så här är ett exempel på en bank. Detta är Bank of America. Det finns en hel drös av dessa i Harvard Square och utanför. Och att märka det, högst upp på skärmen, det finns en, faktiskt, HTTPS. Och det är ännu grönt och betonade för oss för att visa att detta faktiskt ett legitimt säker webbplats, eller så vi har tränats att tro. Nu, förutom det, dock, märker att om vi zoomar in, det är denna sak här, där du uppmanas att logga in. Vad innebär detta hänglås betyder rätt där, bredvid mitt användarnamn uppmaning? Detta är ganska vanligt på webbsidor också. Vad innebär detta hänglås detta? Du verkar som du vet. PUBLIK: Det betyder inte någonting. David J. MALAN: Det betyder ingenting. Det innebär att Bank of America vet hur att skriva HTML med bildtaggar, eller hur? Det betyder verkligen ingenting, eftersom även vi, med hjälp av den första dagen i vår look vid HTML kan koda upp en sida med en röd bakgrund och en bild, som en GIF eller whatnot, som råkar se ut som ett hänglås. Och ändå är denna super vanligt i webbsidor, eftersom vi har fått utbildning i att ta på sig att, åh, hänglås betyder säker, när det verkligen betyder bara vet HTML. Till exempel, tillbaka i dag, jag kunde har just lagt ut på min hemsida, hävdar att det är säkert, och frågar, effektivt, för människors användarnamn och lösenord. Så ser i webbadressen är åtminstone en bättre ledtråd, eftersom det är inbyggt i Chrome eller vad webbläsare du använder. Men även då, ibland saker kan gå fel. Och faktiskt, kanske du inte alltid se HTTPS, än mindre i grönt. Har någon av er någonsin sett en skärm som denna? Du kanske har, faktiskt, tidigare i oktober, när jag glömde att betala för vår SSL-certifikat, som det kallas, och vi letade ut detta för en timme eller två. Så du har förmodligen sett saker så här, med ett genomslag, som en röd linje genom protokollet i webbadressen eller någon form av skärm som är åtminstone förman du för att försöka gå vidare. Och Google Här är inbjudande dig att gå tillbaka till säkerheten. Nu, i det här fallet, detta bara inneburit att SSL-certifikat som vi använde, de stora, matematiskt användbara siffror som är förknippade med CS50 server, inte längre gällde. Och i själva verket kan vi simulera detta, som du kan på din bärbara dator. Om jag går in i Chrome här, och låt oss gå till facebook.com, och det ser ut så här är säkert. Men låt mig gå vidare nu och klicka på hänglåset här. Och låt mig gå till Connection, Certifikatinformation. Och faktiskt, vad du kommer se här är ett gäng av lägre nivå detaljer om som facebook.com egentligen är. Det verkar som om de har betalat pengar till ett företag som heter kanske Digicert Hög Försäkring som har lovat att tala om för resten av världen att om en webbläsare någonsin ser en certificate-- du kan tänka det bokstavligen som ett certifikat som ser ut som det ostliknande sak i toppen left-- sedan facebook.com är som de säger att de är, eftersom all denna tid, när du besöker en webbplats, som cs50.harvard.edu eller facebook.com eller gmail.com som använder HTTPS Webbadresser, bakom kulisserna, det finns denna typ av transaktion händer automatiskt för dig, vari facebook.com, i detta fall, skickar till din webbläsare dess så kallad SSL-certifikat, eller snarare, dess publika nyckel, och sedan din webbläsare använder den publika nyckeln att därefter skicka krypterad trafik till och från den. Men det finns hela denna hierarki i världen av företag att du betalar pengar till vem som kommer då vittna, i en digital bemärkelse, att du verkligen facebook.com eller din server är verkligen cs50.harvard.edu. Och inbyggd i webbläsare, som Chrome och IE och Firefox, är en lista på alla de sk certifikatutfärdare som är godkända av Microsoft och Google och Mozilla för att bekräfta eller förneka att facebook.com är vem det säger att det är. Men kruxet är att dessa saker förfaller. I själva verket ser Facebook är som det går ut i oktober, 2015. Så vi kan faktiskt simulera detta om jag gå i min Mac till min Systeminställningar, och jag går in datum och tid, samt Jag går in datum och tid här, och jag låsa upp denna här-- tack och lov, Vi visade inte ett lösenord här time-- och nu går jag ner för att avmarkera det. Och låt oss actually-- oops, det är inte lika intressant som att göra detta. Vi är bokstavligen i framtiden nu, vilket innebär att detta är vad 2020 är. Om jag laddar nu page-- låt oss göra det i Ingognito mode-- om jag ladda om sidan, där vi går. Så nu, tycker min dator Det är 2020, men min webbläsare vet att detta certifikat från Facebook går ut, naturligtvis, i 2015. Så det ger mig denna röda budskap. Nu, tack och lov, webbläsare som Chrome har faktiskt gjorde det ganska svårt att fortsätt ändå. De vill att jag faktiskt att gå tillbaka till säkerheten. Om jag klickar här på Advance, det kommer att berätta lite mer detaljer. Och om jag verkligen vill att gå vidare, de ska låta mig gå till facebook.com, vilket är, igen, osäkra, vid vilken punkt Jag får se Facebooks hemsida, som den här. Men sedan annat verkar vara brytning. Vad är förmodligen bryta i detta läge? PUBLIK: JavaScript. DAVID J. MALAN: Liksom JavaScript och / eller CSS filer är på liknande sätt möter detta fel. Så det här är bara en dålig situation totalt sett. Men poängen här är att åtminstone Facebook har verkligen SSL aktiverat för sina servrar, som många webbplatser, gör, men inte nödvändigtvis alla. Men det är inte bara takeaway här. Visar sig att även SSL har demonstrerats att vara osäkra på något sätt. Så jag slags antyder att SSL, bra. Leta efter HTTPS webbadresser, och livet är bra, eftersom all din HTTP-trafik och rubriker och innehåll är krypterad. Ingen kan avlyssna den i mitten, med undantag för en så kallad man i mitten. Detta är en allmän teknik i världen av säkerhet känd som en man-in-the-middle attack. Anta att du är den här lilla laptop över här till vänster, och antar att du försöker besöka en server där borta till höger, liknande facebook.com. Men anta att, i mellan dig och Facebook, är en hel massa andra servrar och utrustning, som switchar och routrar, DNS-servrar, DHCP-servrar, varav ingen vi kontrollerar. Det kan styras med Bucks eller Harvard eller Comcast eller liknande. Tja, antar att någon uppsåt, i nätverket, mellan dig och Facebook, kan berätta för dig att, vet du vad, IP-adress Facebook är inte vad du tror det är. Det är denna IP istället. Och så din webbläsare är luras till att begära trafik från en annan dator helt och hållet. Tja, antar att datorn bara tittar på alla av trafiken du begär från Facebook och alla webbsidor att du begär från Facebook. Och varje gång det ser i din trafik en URL som börjar med HTTPS, det dynamiskt, om flyga, skriver den som HTTP. Och varje gång det ser en plats header, plats kolon, som vi använder för att omdirigera användaren, de också, kan ändras genom den här mannen i mitten från HTTPS till HTTP. Så även om du själv kanske tror du är på den riktiga Facebook, Det är inte så svårt för en motståndare med fysisk tillgänglighet till nätverket för att helt enkelt returnera sidor för er att ser ut som Gmail, som ser ut som Facebook, och faktiskt URL är identiska, eftersom de är låtsas ha samma värdnamn på grund av vissa utnyttjande av DNS eller något annat system som. Och resultatet är då att vi människor bara kanske inse att, OK, det här ser ut som Gmail eller åtminstone den äldre versionen, eftersom denna bild från en äldre presentationen. Men det ser ut this-- http://www.google.com. Så även här verkligheten är att hur många av er, när du går till Facebook eller Gmail eller någon webbplats och du vet lite något om SSL, hur många av er fysiskt skriva https: // och sedan webbplatsen namn, Enter. De flesta av oss bara skriva, liksom, CS50, tryck Enter, eller F-A för Facebook och tryck Enter, och låt det komplettera automatiskt. Men bakom kulisserna, om du tittar på din HTTP-trafik, det finns förmodligen en hel drös av de lokaliserings headers som skickar dig från Facebook till www.facebook.com till https://www.facebook.com. Så det är en eller flera HTTP-transaktioner där din uppgift är sändas i det klara, ingen kryptering som helst. Nu, som kanske inte är så stort handlar om allt du försöker göra är tillgång till hemsidan, du är inte skicka ditt användarnamn och lösenord. Men vad är det under huven, särskilt för PHP-baserade webbplatser som är också skickas fram och tillbaka när du besöka några webbsida om att webbplatsen använder, säg, PHP och implementerar funktioner som pset7? Det som skickas fram och tillbaka i din HTTP-rubriker som gav dig tillgång till denna vackra användbart super globalt i PHP? Målgrupp: Cookies. DAVID J. MALAN: Kakor, specifikt PHP sess ID cookie. Så minns, om vi går till, säg, cs50.harvard.edu igen, men denna gång, låt oss öppna upp Fliken Nätverk, och nu, här uppe, Låt oss bokstavligen bara gå till http://cs50.harvard.edu och sedan trycka Enter. Och sedan titta på skärmen här nere. Lägg märke till att vi faktiskt fick tillbaka en 301 flyttas permanent meddelande, vilket innebär att det finns en plats header här, som nu omdirigera mig till HTTPS. Men kruxet är att om jag redan haft en cookie stämplat på min hand så gott, som vi har diskuterat tidigare, och Jag mänskliga slags omedvetet bara besöka den osäkra version, och min webbläsare tar det på sig att visa att handen stämpel för den första begäran, vilket är via HTTP, någon människa i mitten, något motståndare i mitten, kan teoretiskt bara se dessa HTTP-huvuden, bara som om vi tittar på dem här. Det är bara när du är prata med en HTTPS URL gör den handen stämpel själv får krypterad, a la Caesar eller Vigenère, men med en snyggare algoritm helt och hållet. Så här också, även om webbplatser använder HTTPS, vi människor har betingats, tack till automatisk komplettering och andra tekniker, att inte ens tänka på de potentiella konsekvenserna. Nu, det finns vägar runt detta. Exempelvis har många webbplatser kan konfigureras så att när du har denna hand stämpel, kan du tala om för webbläsaren, denna hand stämpel är bara för SSL-anslutningar. Webbläsaren bör inte uppvisa det till mig om det är över SSL. Men många webbplatser försök inte med det. Och många webbplatser tydligen inte ens bry med SSL alls. Så för mer om det, det finns faktiskt ännu mer smuts i denna presentation att en annan höll vid en så kallad svart Hat konferensen ett par år sedan, där det finns även andra illvilliga tricks människor har använt. Du kanske kommer ihåg det här begreppet en favicon, som är som en liten logotyp som är ofta i webbläsarens fönster. Nå, vad har varit vanligt bland skurkarna är att göra fab ikoner som ser ut som vad? PUBLIK: [OHÖRBAR]. DAVID J. MALAN: Säg igen? PUBLIK: De webbplatser. DAVID J. MALAN: Inte en webbplats. Så favicon, liten liten ikon. Vad skulle vara det mest skadlig, manipulativ sak Du kan göra din webbplats standardikon se ut? Publik: En grön lås. DAVID J. MALAN: Vad är det? PUBLIK: Lite grön lås. DAVID J. MALAN: Like ett grönt lock, exakt. Så du kan ha denna estetiska av en liten grön hänglås, antydan till världen, åh, vi är säker, då, återigen, allt det innebär är att du vet lite HTML. Så sessionskapning syftar på just detta. Om du har någon som är typ av sniffa etermedierna i detta rum här eller har fysisk tillgång till en nätverk och kan se dina cookies, han eller hon kan ta det PHP sess ID cookie. Och sedan, om de är kunniga nog att veta hur man kan skicka samma kaka som sin egen handen stämpel bara genom att kopiera detta värde och skicka HTTP headers, Någon kan mycket lätt logga in på någon av Facebook- konton eller Gmail-konton eller Twitter-konton som är här, öppna i rummet, om du inte använder SSL och om webbplatsen är inte använder SSL korrekt. Så låt oss övergång till en annan. Så en annan sann historia. Och detta bara galopperade i nyheter en vecka eller två sedan. Verizon har gjort en mycket ond sak, och som bästa människorna kan berätta, sedan åtminstone 2012, varigenom, När du besöka webbplatser via en Verizon mobiltelefon, oavsett tillverkare det är, de har varit presumptuously, som historien går, injicering i alla dina HTTP trafik egen HTTP-huvudet. Och att header ser ut liknande this-- X-UIDH. UID är som en unik identifierare eller användar-ID. Och X betyder just detta är en anpassad header det är inte standard. Men vad det betyder är att om jag drar upp, till exempel en webbplats på min telefon här-- och jag använder Verizon som min carrier-- trots att min webbläsare kanske inte att skicka detta HTTP header, Verizon, så snart eftersom signalen når sin mobiltelefon torn någonstans, har varit en tid injicerar detta header in alla våra HTTP-trafik. Varför gör de det? Förmodligen för spårningsskäl för reklamskäl. Men det moronic besluts designen här är att en HTTP-huvudet, som ni vet från pset6, tas emot av alla webbservrar att du begär trafiken av. Så hela den här tiden, om du har besökt Facebook eller Gmail eller någon hemsida som inte använder SSL all time-- och faktiskt, de två lyckligtvis nu do-- men andra webbplatser som använder inte SSL hela tiden, Verizon har väsentligen varit plantering, med våld, en hand stämpel på alla våra händer att även vi inte ser, utan snarare, slut webbplatser gör. Och så har det inte varit att svårt för vem som helst på Internet kör en webbserver till inse, ooh, det här är David, eller, ooh, det här Davin, även om vi är rigorösa om att rensa våra cookies, eftersom det inte kommer från oss. Det kommer från bäraren. De gör en sökning på ditt telefonnummer och sedan säga, åh, det här är David. Låt mig injicera en unik identifierare så att våra annonsörer eller vem kan hålla reda på detta. Så det här är faktiskt mycket, mycket, mycket dåligt och skrämmande. Och jag vill uppmuntra er att titta, till exempel, på den här webbadressen, som jag borde förnekanden Jag försökte faktiskt detta i morse. Jag skrev ett litet manus, uttryckte det på följande webbadress, besökte det med min egen Verizon Mobiltelefon efter vridning Wi-Fi off. Så du måste slå på Wi-Fi av så att du använder 3G eller LTE eller liknande. Och sedan, om du besöker denna URL, allt detta script gör för er, om du vill spela, det spottar ut vad HTTP-huvuden telefonen sänder till vår server. Och jag faktiskt, i rättvisans namn, gjorde inte ser detta i morse, som får mig att tänka antingen det lokala mobiltelefon torn jag var ansluten till eller whatnot inte gör det, eller de har backade att göra detta för tillfället. Men för mer information huvudet till denna URL här. Och nu this-- här komiska verkar förnuftigt. Nej? OK. Okej. Det dog. Okej. Så låt oss ta en titt på ett par mer attacker, om så bara för att öka medvetenheten om och sedan erbjuda ett par möjliga lösningar så att du är desto mer uppmärksam. Detta talade vi om den andra dag, men gav inte ett namn. Det är en cross-site request förfalskning, vilket är en alltför fint sätt att säga du lura en användare till att klicka på en URL som denna, som knep dem i vissa beteenden som de inte hade för avsikt. I detta fall verkar det att försöka lura mig till att sälja mina aktier i Google. Och detta kommer att lyckas om Jag, programmeraren av pset7, har inte gjort vad? Eller snarare, mer allmänt, i vilken fall är jag sårbar för en attack Om någon försöker lura en annan användares till att klicka på en URL som denna? Yeah? PUBLIK: Du behöver inte skilja mellan GET och POST. DAVID J. MALAN: Good. Om vi ​​inte gör skillnad mellan GET och POST, och faktiskt, om vi låter GET för att sälja saker, vi bjuder in den här typen av angrepp. Men vi kunde ändå dämpa det lite. Och jag kommenterade, tror jag, förra veckan att Amazon minst försöker att motverka detta med en teknik det är ganska enkelt. Vad skulle en smart sak att göra på din server, snarare än att bara blint sälja oavsett symbol användaren skriver in? PUBLIK: Bekräftelse av slag? DAVID J. MALAN: En bekräftelseskärm, något som involverar mänsklig interaktion så att jag är tvungen att göra dom samtal, även om jag har naivt klickat en länk som ser ut så här och ledde mig till cellen skärmen, vid Minst bad mig att bekräfta eller förneka. Men inte en ovanlig attack, speciellt i så kallade phishing eller spam-liknande attacker. Nu, här är lite mer subtil. Detta är en cross-site scripting-attack. Och detta händer om din webbplats inte använder motsvarigheten av htmlspecialchars. Och det tar användarens input och bara blint injicera det i en webbsida, såsom med tryck eller eko, with-- igen-- ut ringer något liknande htmlspecialchars. Så antar webbplatsen i Frågan är vulnerable.com. Och antar att det tar emot en parameter som heter q. Titta på vad som kan hända om jag faktiskt, en skurk, skriver in eller lura en användare till besöker en webbadress som ser ut som this-- q = open script-tagg, stängd skripttagg. Och återigen, jag antar att vulnerable.com är inte kommer att vända farliga tecken som öppna konsoler i HTML-entiteter, det et-tecken, L-T, semikolon sak som du kanske har sett förut. Men vad är skriptet eller JavaScript-kod Jag försöker lura en användare till att köra? Tja, hänvisar document.location min webbläsare nuvarande adress. Så om jag gör document.location =, Detta gör att jag kan omdirigera användaren i JavaScript till en annan webbplats. Det är som vår PHP-funktionen omdirigera, men gjort i JavaScript. Var ska jag försökte skicka användaren? Jo, tydligen, badguy.com/log.php, som är en del manus, som synes, den onde skrev, som tar en parameter kallad cookie. Och varsel, vad gör jag verkar vara konkatenering på slutet av det likhetstecken? Tja, något som säger document.cookie. Vi har inte pratat om det här. Men det visar sig, i JavaScript, precis som i PHP, du kan komma åt alla cookies att din webbläsare faktiskt använder. Så effekten av denna en kodrad, om en användare luras att klicka på denna länk och webbplatsen vulnerable.com inte undkomma den med htmlspecialchars, är att du har bara ett effektivt sätt upp till log.php alla dina cookies. Och det är inte alltid så problematiskt, utom om en av dessa cookies är din session-ID, din så kallade handstämpel, som innebär badguy.com kan göra sin egen HTTP-förfrågningar, skicka den samma hand stämpel, samma kaka header, och logga in oavsett hemsida du besökte, vilket i det här fallet är vulnerable.com. Det är en cross-site scripting attack i den meningen att du är sortens lura en plats i talande en annan webbplats om viss information det bör inte, i själva verket har tillgång till. Okej, redo för en annan oroande detalj? Okej, är världen en skrämmande plats, legitimt så. Här är en enkel JavaScript exempel som är i dagens källkod heter geolocation 0 och 1. Och det finns ett par walkthroughs på nätet för detta. Och det gör följande om jag öppna denna webbsida i Chrome. Det gör först ingenting. OK, vi ska prova det här igen. Oh. Nej, det gör något. OK, stand by. Låt oss prova det här en gång till. [OHÖRBAR] Ah, OK, inte säker på varför the-- åh, apparaten troligen förlorat internet åtkomst av någon anledning. Okej, så händer mig också. Okej, så meddelande vad som händer här. Denna kryptiska utseende URL, vilket är bara en av CS50 server, vill använda min dator plats, liksom fysiskt betyder. Och om, ja, jag klickar på Tillåt, låt oss se vad som händer. Tydligen är detta min nuvarande latitud och längsgående koordinater ned till en ganska bra upplösning. Så hur hamnade jag på det här? Hur denna webbplats, liksom CS50 server, vet fysiskt var i världen Jag är, än mindre med den precision. Tja, visar out-- låt oss bara titta på sidans source-- att här är ett gäng HTML på botten som först har this-- kroppen onload = "Lokalisera" - bara en funktion jag skrev. Och jag säger, om lastning sidan, ring Lokalisera. Och så finns det inget i kroppen, eftersom i huvudet på sidan, märke till vad jag har här. Här är min Lokalisera funktion. Och detta är bara några fel checking-- Om den typ av navigator.geolocation inte är odefinierad. Så JavaScript har detta mekanism där du kan säga, vad är det typ av denna variabel? Och om det inte är undefined-- det betyder att det finns en viss value-- Jag ska ringa navigator.geolocation.getCurrentPosition och sedan återuppringning. Vad är detta? Så generellt, vad är en motringning, bara för att vara tydlig? Du kanske har stött detta redan i pset8. Återuppringning är en generisk term för att göra vad? Känns som bara jag i dag. PUBLIK: [OHÖRBAR]. DAVID J. MALAN: Exakt, en funktion som bör anropas endast när vi har data. Denna uppmaning till webbläsaren, få min nuvarande ställning, kan ta en millisekund, det kan ta någon minut. Vad detta betyder är att vi talar GET getCurrentPosition metoden, kalla denna callback-funktion, som jag bokstavligen som heter återuppringning för enkelhets skull, som tydligen är det en här. Och sättet getCurrentPosition fabrik, helt enkelt genom att läsa dokumentationen för vissa JavaScript-kod på nätet, är att man kallar det så kallade callback funktion, passerar den in i det ett JavaScript-objekt, inuti vilken är .coords.latitude och .coords.longitude, vilket är exakt hur, då, när jag reloaded denna sida, Jag kunde se min plats här. Nu, åtminstone fanns ett försvar här. Innan jag besökte denna sida, när det faktiskt fungerade, vad var jag åtminstone tillfrågas om? PUBLIK: [OHÖRBAR]. DAVID J. MALAN: Ja eller no-- göra du vill tillåta eller neka detta? Men tänk också om vanor ni har nog antagit, både på dina telefoner och din webbläsare. Många av oss, mig själv ingår, är förmodligen nätt predisponerade dessa days-- du se en pop-up, bara Enter, OK, Godkänn, Tillåt. Och mer och mer, kan du sätta själv i riskzonen för dessa skäl. Så i själva verket, det var denna underbara bugg några år ago-- eller brist på feature-- att iTunes hade för några år sedan, som innebär att om du hade en mobiltelefon, och det var en iPhone, och du lämnade ditt hem och därför reste runt om i världen eller grannskapet, hela tiden, telefonen var loggning var du är via GPS. Och detta är faktiskt avslöjas, och folk sorts förvänta sig detta nu. Telefonen vet var du befinner dig. Men problemet var att, När du säkerhetskopierar telefonen till iTunes-- detta var innan de dagar av icloud, vilket är för bättre eller för worse-- att data lagras i iTunes, helt okrypterad. Så om du har en familj eller rumskamrater eller en illvillig granne som är nyfiken på bokstavligen varje GPS koordinat du någonsin har varit på, han eller hon kunde bara sitta ner med iTunes, kör vissa program som var fritt tillgängliga, och producerar kartor som denna. I själva verket är det här jag producerat av min egen telefon. Jag inkopplad det. Och det ser ut, baserad på de blå prickarna där, det är där de flesta av GPS-koordinaterna var loggas av iTunes som jag var i nordöst där. Men jag tydligen reste runt en bit, även inom Massachusetts. Så det är Boston Harbor finns till höger. Det är typ av Cambridge och Boston, där det är som mörkast. Och ibland vill jag springa ärenden att en större geografi. Men iTunes, i flera år, hade som bäst Jag skulle kunna berätta, allt detta uppgifter om mig. Du kan tala om att, det året, var jag faktiskt reser mycket mellan Boston och New York, som går fram och tillbaka och fram och tillbaka. Och faktiskt, detta är jag på Amtrak, baksida och tillbaka, fram och tillbaka, en hel del. Allt som loggas och lagras krypterat på min dator för alla som kan ha tillgång till min dator. Detta var oroande. Jag visste inte varför jag var i Pennsylvania eller varför min telefon var i Pennsylvania, uppenbarligen ganska tätt. Och, slutligen, såg jag på min gcal, och, åh, jag besökte CMU, Carnegie Mellon, på den tiden. Och skönt, den typen av förklarade att blip. Och sedan, om du zoomar ut längre, kan du ser jag besökte San Francisco en eller flera gånger då, och jag hade även en snacka i vad Jag tycker är Vegas, där nere. Så alla this-- bara en snacka på flygplatsen. PUBLIK: [SKRATT] Så detta är bara att säga att dessa problem, ärligt talat, är allestädes närvarande. Och det bara känns alltmer som det finns mer och mer av detta röjs, vilket förmodligen är en bra sak. Jag vågar påstå, att världen inte är blir sämre på att skriva mjukvara. Vi blir bättre, förhoppningsvis på att uppmärksamma hur illa viss programvara är att vi använder. Och tack och lov, en del företag har börjat att ställas till svars för detta. Men vilka typer av försvar kan du ha i åtanke? Så förutom lösenord chefer, liksom 1Password och Lastpass och andra, Förutom att bara ändra dina lösenord och komma med slumpmässiga ettor med hjälp av programvara som det, kan du också prova så gott du kan för att kryptera all din trafik till åtminstone begränsa det fria ett hot. Så till exempel, som Harvard dotterbolag, du kan alla gå till vpn.harvard.edu och logga in med ditt Harvard-ID och PIN-kod. Och detta kommer att upprätta en säker koppling mellan dig och Harvard. Nu gör det inte nödvändigtvis skydda dig mot eventuella hot som finns mellan Harvard och Facebook eller Harvard och Gmail. Men om du sitter på en flygplats eller om du är sitter i Starbucks eller du är sitter på en väns plats, och du inte riktigt litar på dem eller deras konfiguration av deras hem router, åtminstone du kan upprätta en säker anslutning till en enhet som denna plats som är förmodligen lite bättre säkrad än något som liknar en Bucks eller liknande. Och vad detta innebär är den fastställer, återigen, kryptering mellan dig och slutpunkten. Ännu finare är saker som detta. Så en del av er kanske redan känna till Tor, vilket är den här sortens anonymisering nätverk, där massor av människor, om de kör det här programmet, väg därefter deras internet trafik genom varandra. Så den kortaste punkten är inte längre mellan A och B. Men det kan vara hela Placera så att du är i huvudsak täcker sina spår och lämnar mindre av ett rekord om var din HTTP trafiken kommer ifrån, eftersom det kommer genom en hel massa andra människors bärbara och stationära, på gott och ont. Men även detta är inte ett bombsäkert sak. Några av er kanske kommer ihåg förra året det bombhot som kallades in. Och det spårades slutligen till en användare som hade använt detta nätverk här. Och fångsten där, som jag minns det, är, Om det inte finns så många andra människor med hjälp av en programvara som denna, eller använder denna port och protokoll, det är inte så svårt för ett nätverk för att ens lista ut vem, med viss sannolikhet, i själva verket var anonyma sin trafik. Och jag vet inte om de var faktiska uppgifterna i fråga. Men säkert, inser att ingen av dessa är bombsäkert lösningar, liksom. Och målet här i dag är att minst få dig att tänka på dessa saker och komma med tekniker för försvara dig mot dem. Eventuella frågor om alla de hot som väntar där ute, och här inne? Yeah? PUBLIK: Hur säkert göra Vi räknar med att i genomsnitt [? webbplats för att vara,?] som den genomsnittliga CS50 projektet? David J. MALAN: Den Medel CS50 projektet? Det är alltid bevisat varje år som Vissa CS50 sista projekt inte särskilt säker. Vanligtvis är det en del rumskompis eller hallmate att siffrorna ut detta genom att skicka förfrågningar till ditt projekt. Kort answer-- hur många webbplatser är säkra? Jag plockar på dagens anomalier. Som det var bara tillfällighet som jag insåg att denna webbplats Jag har beställa dessa frankly utsökta arrangemang from-- och jag är inte säker på att jag ska sluta använda deras hemsida; Jag kan bara ändra min lösenord mer regularly-- Det är inte klart hur sårbar alla dessa various-- Detta är chokladtäckta faktiskt. Det korta svaret, jag kan inte svara på det effektivt, annat än för att säga det var inte så svårt för mig att hitta några av dessa exempel bara av hänsyn till diskussionen i föreläsningen. Och bara hålla ett öga på Google News och andra resurser kommer att ge ännu mer av dessa typer av saker att lysa. Okej, låt oss sluta med denna prequel att CS50 team har förberett för dig i väntan på CS50 hackathon. Och på väg ut i ett ögonblicket, kommer frukt serveras. [VIDEOAVSPELNING] [MUSIK Fergie, Q tips, och GOONROCK, "A LITTLE PARTY DÖDADE ALDRIG INGEN (ALL VI FICK) "] - [SNARKNING] [END VIDEOAVSPELNING] DAVID J. MALAN: Det är det för CS50. Vi ses på onsdag. [MUSIK - Skrillex, "IMMA" prova det "]