Лучай Аранго: Добра, хлопцы. Мяне клічуць Лучана Аранго. Я на другім курсе ў Adams House. І мы збіраемся казаць пра вэб-бяспекі актыўнай абароны. Так што я працую на Упраўленне інфармацыі Бяспеку ў моры. І на працягу лета, я інтэрнаваныя ў SeguraTec, які быў інфармацыя ахоўная фірма, якая служыла для Банка Калумбія. Гэта ў асноўным, дзе я даведаўся, што я даведаўся да гэтага часу. І таму некаторыя з матэрыялу, які мы знаходзімся збіраюся перайсці на сёння, у нас ёсць не сапраўды казалі ў класе. Але мы хутка. Гэта будзе, як SQL, JavaScript. І мы сапраўды не пайшоў па ёй. Так што я могуць быць адсартаваныя палёту праз яго, і вы можаце не ведаць некаторыя рэчы. Але ў бліжэйшы час, вы даведаецеся яго. І гэта будзе ўсё мае сэнсу. Таксама яшчэ адна рэч - застацца этычна. Некаторыя з рэчаў, якія вы даведаецеся, вы маглі б выкарыстоўваць у не-этычных спосабамі. Калі гэта ваш, безумоўна, паспрабаваць. Я вызначана матываваць вас, хлопцы паспрабаваць свае ўласныя серверы, паспрабуйце адбываецца ўнутры іх. Глядзіце, калі вы можаце пракрасціся іх, калі вы можаце атрымаць у іх. Але не каго-небудзь яшчэ. Мянты не вельмі люблю жарты і ўся, мы задушылі гэта тут. Мы былі важдацца. Яны атрымліваюць вельмі злы. Так над галавой у гэтым сайце. У мяне адкрыўся прама тут. Гэта сайт, і гэта мае кучу прыкладаў. Што адбываецца, што першы прыклад з'яўляецца свайго роду будзе нашмат прасцей чым у мінулым, напрыклад, у вядомым сэнсе што першы прыклад цалкам небяспечна. І апошні з якіх з'яўляецца свайго роду тое, што нармальны чалавек вэб-бяспекі будзе рабіць. Але вы ўсё роўна можаце сартаваць з абыйсці гэта. І мы збіраемся упорам на адзін і два, прыклады адзін і два. ОК. Давайце пачнем з межсайтовый скріптінга. JavaScript выконваецца на браўзэр кліента. Гэта мова праграмавання, які вы выкарыстоўваеце для запуску ў браўзэры кліента так Вы не павінны абнаўляць сайт і вярнуцца да сервера. У вас ёсць гэта працуе. Напрыклад, Facebook, вы не павінны перазагрузіць сайт новым статусе абнаўлення, каб прыдумаць. Генераваць Яна выкарыстоўвае наяўнасць усе гэтыя рэчы. Так што мы можам укараніць шкоднасны JavaScript ў вэб-сайтаў. І такім чынам, калі мы пасылаем спасылку на хтосьці, мы маглі роду адправіць яго з частка кода, які мы хочам. Там у ўстойлівымі і непастаянныя JavaScript - ўстойлівыя і непастаянныя межсайтовый сцэнарыяў, я маю на ўвазе. А розніца ў тым, што пастаянныя з'яўляецца JavaScript, што будзе захоўваюцца на вэб-сайце. І непастаянныя будзе JavaScript што будзе на самой справе проста так адзін раз. Так што давайце паглядзім на прыкладзе сапраўды хутка. ОК. Так гэты сайт, проста, нічога не адбываецца тут. І мы збіраемся, каб паспрабаваць ўставіць некаторыя JavaScript. Так як мы пачынаем пісаць наяўнасць з'яўляецца мы пачынаем з пачаткам сцэнара. І мы закрыць яго з дапамогай сцэнарыя. Мы проста збіраемся змясціць паведамленне - Я пакажу вам, - папярэджанне. Апавяшчэнне гэта функцыя, якая JavaScript выкарыстоўвае для адлюстравання нешта. Так давайце паспрабуем сапраўды хутка. Я збіраюся пайсці, абвестка прывітанне. Ну, я забыўся паставіць - ОК. Так вось проста. Ставім наяўнасць на вэб-сайце, і гэта прыдумаў. І гэта свайго роду адбываецца толькі на нашым сайце, ці не так? Так што падобна, што гэта не праблема, ці не так? Я маю на ўвазе, як вы маглі выкарыстоўваць гэта зламысна? Такім чынам, спосаб, якім хакеры рабіць гэта сапраўды проста. Яны збіраюцца, каб схапіць яго. Яны могуць пасылаць гэтую спасылку да вас. Калі я пашлю гэтую спасылку на вас прама цяпер, і вы адкрываеце яго, ён збіраецца кажуць, прывітанне, кажучы, што мой сайт кажа вам прывітаньне. І таму, калі я скажу, што-то трохі разумнейшыя, калі б я падцягнуць JavaScript функцыя Я як бы ўжо пісаў - але калі вы паглядзіце на яе, я пайду над ім, перш чым я яе напісаў. Такім чынам, мы збіраемся ўсталяваць тайм-аўт. Мы збіраемся чакаць пару секунд. На самай справе, мы не зьбіраемся чакаць, калі Я не памыляюся, пяць секунд. Гэта ідзе ў мілісэкундах. А потым, што мы збіраемся зрабіць, гэта мы збіраецца папярэдзіць, што Увайсці Тайм-аўт, каб зноў увайдзіце І мы збіраемся, каб змяніць месцазнаходжанне ў іншае месца. Так што, калі я пасылаю гэты сайт, каб хтосьці, яны збіраюцца быць праглядаюць вакол, спакойна. Нічога не адбываецца. І праз пяць секунд, ён збіраецца сказаць, ваша Увайсці скончыўся. Калі ласка, зноў увайдзіце Як толькі яны націсніце кнопку ОК, я збіраюся узяць іх на іншы сайт. Як мяркуецца, сайт збіраецца быць падобная на сайце, што яны былі раней. І яны збіраюцца увайсці іх Паўнамоцтвы ў маім вэб-сайце, а ня іх сайт. І так я магу паслаць людзям па электроннай пошце з гэтай спасылцы. Я кажу, ну, вось спасылка. Гэта банк, напрыклад. Я кажу, вось, ідуць па гэтай спасылцы. І як толькі яны адправіць яго, яны будзе аглядацца. Я магу пачакаць на працягу 15 секунд, 20 секунд, а затым поп, што, калі ласка, зноў увайсці ў падпісаць назад. Вы, хлопцы, можаце паспрабаваць яго з нашмат больш рэчаў. Гэта складана, таму што вы, хлопцы, не бачыў наяўнасць, так што вы маглі б не ведаю, што некаторыя функцыі. Але ўсё, што вам трэба зрабіць, гэта пачатак са сцэнарам, сканчаюцца сцэнара. І вы маглі б паставіць што-небудзь у сярэдзіне. Апавяшчэнне з'яўляецца функцыяй, чакаць. Размяшчэнне вокнаў прывядзе вас на новае месца. Але вы можаце зрабіць значна больш. І таму ідэя ў тым, што мы здымі гэта. Калі я іду ў прыкладзе два, і я пакласці ў гэтым жа кодзе, гэта не будзе працаваць. Так што гэта друк ўсё, таму што што гэты сайт першапачаткова робіць, калі я пастаўлю тут нічога, гэта будзе раздрукаваць яго прама тут. Так што гэта не друк што-небудзь. Гэты прыклад фактычна праверкі каб убачыць, калі сцэнар ёсць. Так што так, ісці наперад. Спытаеце мяне. АЎДЫТОРЫЯ: не пасылае атрымаць ці адправіць запыт? Лучай Аранго: Так. яны адправіўшы запыт GET. АЎДЫТОРЫЯ: Гэта? Лучай Аранго: Так. Таксама браўзэры выкарыстоўваюць паштовыя запыты. Але я спрабую паказаць запыты GET так што мы можам бачыць тое, што адбываецца на самай справе. І таму, калі мы глядзім на гэтага кода - так што гэта не працуе больш. І калі мы зірнем на гэты код, гэта будзе ў другім прыкладзе. Што гэты чалавек робіць, чалавек адказвае за гэтага браўзэра - адкрыць, ОК - замяняе сцэнар слова. Гэта PHP, якія вы, хлопцы, маглі б бачылі трохі яшчэ. Ён проста замяніўшы Слова скрыпт з імем. Так, аднак, калі я іду наперад і проста пакласці ў - калі я хапаю код яшчэ раз, і я збіраюся змяніць яго толькі крыху. Замест таго, каб сцэнар, я збіраюся змяніць гэта для сцэнара з вялікай літары Р. І мы збіраемся паглядзець, калі гэты код працуе. Так што не раздрукаваць яго, які з'яўляецца добрым знакам. І, спадзяюся, яшчэ ў двух секунд, гэта будзе ўсплываў. Ваш Увайсці скончыўся. ОК. Нічога страшнага. Так праверка на сцэнар можа не абавязкова працаваць. Чалавек - ён таксама можа праверыць сцэнара верхнім рэгістры, Сцэнар у ніжнім рэгістры, вул справа параўнаць, пераканацца, што яны тое ж самае. Але хакер можа яшчэ зрабіць выгляд, што мы зрабілі ў Vigenere калі мы пераехалі назад пару знакаў, рухацца наперад. І гэта можа высветліць, як паставіць сцэнар вярнуцца туды, каб ён мог надаць што сцэнар. Так што вы хочаце выкарыстоўваць з'яўляецца HTMLSpecialChars да абараніць ваш сайт. І тое, што гэта робіць ён робіць упэўнены, што тое, што вы паклалі ў - напрыклад, цытаты або гэта больш ці менш - замяняецца чымсьці што не будзе - дазвольце мне павялічыць тут - фактычная Ампэрсанд. Ён заменіць тыя спецыяльныя HTML сімвалы, якія мы ўбачым, калі мы гаворым пра - о, гэта збіраецца ўзяць мяне да - гэтыя сімвалы прама тут. Гэта азначае, што нешта ідзе. Для HTML, што, пачынаючы кранштэйна кажа нам, што нешта Звязаных HTML ідзе. І мы хочам, каб пазбавіцца ад гэтага. Мы не хочам, каб пакласці HTML у website.k Мы не хочам, каб карыстальнік стане пакласці што-то ў сваім вэб-сайце што можа паўплываць на іх вэб-сайт, як сцэнар або HTML ці нешта накшталт гэтага. Важна тое, што вам саніраваць карыстацкі ўвод. Такім чынам, карыстальнікі могуць ўваходныя шмат рэчаў. Ён можа ўводзіць кучу рэчаў, каб паспрабаваць падмануць ваш браўзэр у яшчэ працуе гэты код сцэнара. Тое, што вы хочаце зрабіць, гэта не проста паглядзець для сцэнара, але паглядзіце на ўсе што можа быць шкоднасным. І HTMLSpecialChars зробіць гэта для вас, так што вы не павінны турбавацца пра гэта. Але не спрабуйце зрабіць самі роду з вашым уласным кодам. Ці ўсё ясна, на XSS? ОК. Пойдзем у ін'екцыі SQL. Так SQL ін'екцыі, верагодна, нумар адзін ўразлівасць ў розных вэб-сайтах. Я маю на ўвазе, добры прыклад - Я проста даследуючы далей за ўсіх за гэтую справу. І я знайшоў гэты дзіўны артыкул, дзе Я бачыў, што Гарвард быў парушаны, быў узламаны. І мне было цікава, ну, як бы яны гэта робяць? Гарвардскі самы дзіўны, самы забяспечыць універсітэт калі-небудзь. Ці не так? Ну, да парушэння серверы, хакеры выкарысталі метад, званы ін'екцыі SQL. Так гэта адбываецца на штодзённай аснове. Людзі забываюць прыняць да ўвагі для ін'екцый SQL. Гарвардскі робіць. Я думаю, што тут гаворыцца, Прынстан, Стэнфард, Корнэл. Так як жа нам - дык што ж гэта SQL ўпырску, што прыносіць усё гэта людзі ўніз? ОК. Так SQL гэта мова праграмавання, што мы выкарыстоўваем для доступу да баз дадзеных. Што мы робім гэта мы выбіраем - так што гэта чытае зараз гэта абраць ўсё са стала. SQL, яна ператвараецца ў гэтых базах дадзеных што ёсць сталы, поўныя інфармацыі. Так абярыце усё, што ад карыстальнікаў дзе імя з'яўляецца імем карыстальніка. Ці не так? Досыць проста. Ідэя ін'екцыі SQL, што мы ўставіць некаторыя шкоднасны код, які будзе падмануць сервер у працуе нешта іншай, чым на першапачаткова бег. Так скажам, імя карыстальніка, мы ўкладваем у або 1 роўная 1. Так мы апранулі ў сістэму або 1 роўная 1. Як гэта будзе чытаць цяпер будзе выбраць ад карыстальнікаў, усё, пачынаючы ад карыстальнікі - гэта і ёсць усё - дзе імя імя карыстальніка, але імя карыстальніка з'яўляецца або 1 роўная 1. Так імя нічога або 1 роўная 1. 1 роўная 1 заўсёды праўдзіва. Так што гэта заўсёды будзе вяртаць інфармацыю ад карыстальнікаў. ОК. Мы не павінны мець правільнае імя карыстальніка. Мы можам проста ўсё, што мы хочам, і ён вернецца інфармацыю што нам трэба. Давайце паглядзім на іншы прыклад. Калі мы выбраць усе, ад карыстальніка, дзе клічуць DROP карыстальнікі ТАБЛІЦА - так што вы думаеце гэта будзе рабіць, калі я стаўлю ў імя карыстальніка як карыстальнікі DROP TABLE? Любы, ёсць ідэя? Так. АЎДЫТОРЫЯ: Гэта будзе сказаць гэта зваліць усе табліцы. Лучай Аранго: Гэта будзе казаць нам, скінуць усё на вэб-сайце, усё ў базе дадзеных. І тое, што людзі выкарыстоўваюць гэта для - так Я збіраюся паказаць вам, хлопцы. Я адключыў скінуўшы сталы таму што я не хачу, каб вы хлопцы падаюць мае табліцы. Давайце зірнем на гэта. Так што гэта проста цягне інфармацыю на працягу пэўнага чалавека. Так як жа нам ведаць, калі гэта пацярпелых ад ін'екцыі SQL. Мы збіраемся праверыць рэальны хуткі калі мы можам пакласці што-то - дайце мне скапіяваць гэты код. Я збіраюся перайсці на яго ў секунду. Я збіраюся паставіць корань і 1 роўны 1. Гэта прама тут, гэта знак адсотка 23 - што гэта такое, калі я глядзець прама тут, у - шлях HTML займае ў лічбах, калі вы зірнуць на, калі я паклаў ў прасторы тут - калі б я быў з касмічным нешта тут, гэта змяняе яго на два адсоткі. Вы, хлопцы, бачыце гэта права тут калі я паклаў у прасторы? Як гэта працуе ў тым, што вы можаце толькі адправіць значэнні ASCII праз HTML. Такім чынам, ён замяняе, напрыклад, прастору з працэнтаў 20. Я не ведаю, калі вы, хлопцы бачылі, што раней. Ён замяняе хэштэг з адсоткаў 23. Нам патрэбен хэштэг ў канцы ці заяву, каб мы маглі сказаць У базе забыцца закаментаваць гэтая апошняя кропка з коскі ў канцы. Мы хочам, каб не думаць пра гэта. Мы проста хочам, каб запусціць ўсе што ў нас ёсць загадзя і каментаваць гэта. Давайце зірнем на яго. Так што, калі б я павінен быў пакласці нешта не так - скажам да прыкладу, я паклаў 2 роўна 1, гэта не дае мне нічога. Калі я паклаў у 1 роўны 1, і гэта робіць вярнуць нешта, гэта кажа мне, што гэта ўразлівыя для ін'екцыя SQL. Цяпер я ведаю, што ўсё, што Я паклаў пасля гэтага - і, напрыклад, выдаляць табліцы ці нешта ў гэтым родзе , Безумоўна, працаваць. Я ведаю, што гэта ўразлівыя для ін'екцый SQL таму што я ведаю, што пад капотам, гэта дазволіць мне зрабіць 1 адпавядае 1 рэч. ОК? І калі мы паглядзім на гэтыя іншыя, нумар два і нумар тры, гэта збіраюся зрабіць трохі больш праверкі пад капот, што гэта такое. Такім чынам, любы дазваляюць падзенне Усё яшчэ не спрабаваў? Як вы, хлопцы роду атрымаць SQL яшчэ? Таму што я ведаю, што вы, хлопцы, значыць не бачылі гэта, так што гэта свайго роду заблытаным для вас, хлопцы. Давайце зірнем. Так у чым жа спосаб прадухіліць SQLI? ОК. Так што гэта сапраўды важна, таму што вам хлопцы вызначана хочаце, каб прадухіліць гэта ў вашых вэб-сайтаў. Калі няма, то ўсе вашыя сябры збіраюцца смяяцца над вамі, калі яны падаюць усё вашыя табліцы. Такім чынам, ідэя ў тым, што вам адрамантаваць SQL пэўным чынам, у той час як вы падыходзіце што карыстач уводзіць з пэўная радок. Такім чынам, Гэта працуе так вы падрыхтаваць базу дадзеных. Вы выбіраеце імя, колер і калорый з базы дадзеных пад назвай садавіны. А потым, калі калорый менш, і мы ставім знак пытання там кажу, што мы збіраемся ўводу нешта ў секунду. І колер роўных, і мы ставім пытанне Знак кажа, што мы збіраемся ўваход нешта ў секунду, а таксама. ОК? А потым мы выканаць яго, паклаўшы ў 150 і чырвоны. І гэта будзе правяраць, каб упэўнены, што гэтыя двое - гэты масіў будзе правяраць, што гэтыя два цэлае і што гэта радок. Тады мы ідзем, і мы здабываем усё, мы паклалі яго ў чырвоны колер. Гэта азначае, што мы здабываем ўсё. Гэта азначае, што мы на самай справе выканаць SQL заяву і паклаў яго назад у чырвоны колер. Тут мы робім тое ж самае, але мы зрабіць тое ж самае для жоўтага. І мы забіраем ўсё. І такім чынам, мы забараніць карыстальніку ад таго, каб ўваходных нешта гэта не тое, што мы паказана, радок або цэламу ліку, напрыклад. Я казаў раней пра спадзявацца на іншых. Калі вы, хлопцы, пачаць свой праект, вы найбольш вызначана збіраюся выкарыстоўваць загружацца ці нешта падобнае. Хлопцы, вы калі-небудзь выкарыстоўвалі Wordpress? Напэўна, вы, хлопцы выкарыстоўвалі Wordpress, хутчэй за ўсё. Такім чынам, праблема з выкарыстаннем чужыя рэчы - Я проста хачу, каб Google вельмі хутка Wordpress уразлівасці. Калі б я ажыццявіць гэта прама цяпер - Я літаральна зрабіў двухсекундный Google. Мы бачым, што Wordpress - гэта ад ў верасні '12. 26 абнаўляецца. У канфігурацыі па змаўчанні Wordpress да 3,6 не перашкаджае іх некаторыя дадання, якія маглі б зрабіць яго прасцей для крос-сайт скріптінга атакі. Так невялікая гісторыя, як толькі мы працавалі с - так што я быў, летам, працуючы стажыроўкі. І мы працавалі з роду як вялікай кампаніі крэдытных карт. І яны належаць на тое, што называецца - Я не ведаю, калі вы, хлопцы калі-небудзь гуляў з прадуктам пад назвай Joomla. Joomla гэта прадукт, які выкарыстоўваецца для кантроль - свайго роду падобныя на Wordpress, выкарыстоўваецца для стварэння вэб-сайтаў. Так у іх быў свой вэб-сайт працуе на Joomla. На самай справе гэта крэдытныя карты Кампанія ў Калумбіі. Я вазьму цябе з іх сайт вельмі хутка. Такім чынам, яны выкарыстоўваюцца Joomla. І яны не абнаўляюцца Joomla ў апошні дадатак. І таму, калі мы былі зірнуць на іх код, мы змаглі на самай справе Заходзім ўнутр іх код і выкрасці ўсе Інфармацыя аб крэдытных картах, што ў іх, ўсе нумары крэдытных карт, імёны, адрасы. І гэта было толькі - і іх код выдатна падышло. У іх была выдатная код. Гэта было ўсё, бяспекі. Яны праверылі ўсе базы дадзеных. Яны пераканаліся, што крос-сайт сцэнарыяў было выдатна. Але яны выкарысталі тое, што не было абнаўляецца, што не быў у бяспекі. І так, што прывяло іх да - каб вы, хлопцы абавязкова будзем выкарыстоўваць іншыя код, рамкі чужыя людзей каб стварыць свой вэб-сайт. Пераканайцеся ў тым, што яны ў бяспецы, таму што часам гэта не вы, той, які робіць памылку. Але хто-то робіць памылку, і затым вы падаеце з-за гэтага. Паролі і PII. Так паролі. ОК. Давайце зірнем на паролі сапраўды хутка. ОК. Скажыце, калі ласка, што ўсе выкарыстоўвае небясьпечны - Я спадзяюся, усё тут выкарыстоўвае бяспечныя паролі. Я проста даючы, што ў якасці здагадкі. Дык вы, хлопцы, безумоўна, будзе захоўваць паролі для вашых сайтаў. Вы збіраецеся зрабіць нешта накшталт Увайсці ці нешта накшталт гэтага. Важна тое, каб не захоўваць паролі ў выглядзе звычайнага тэксту. Гэта надзвычай важна. Вы ж не хочаце, каб захаваць пароль у выглядзе звычайнага тэксту. І вы дакладна не хачу захоўваць яго ў адзін бок хэш. Так што адзін з спосабаў хэш з'яўляецца тое, што, калі вы генераваць словы, калі вы кладзе гэта Слова ў хэш-функцыі, яна будзе генераваць таму нейкі загадкавы паведамленне або загадкавы набор ключоў. Я пакажу вам прыклад. Я збіраюся хэш яны слова password1. Так MD5 хэш збіраецца вярнуць мяне нейкі дзіўны інфармацыі. Праблема ў тым, што людзі там што хацелі б выходзіць у вэб-сайты маюць ўжо высветлілі роду усіх хэшаў MD5. Тое, што яны гэта яны селі на іх кампутары, і яны хэшируется кожны адзіна магчымым слова там да яны атрымалі свайго роду, што гэта такое. Калі б я быў шукаць гэта уверх - Я проста схапіў гэты хэш. Калі я атрымаю гэты хэш ад - калі я іду ў вэб-сайт, і я лічу, гэта хэш, таму што я атрымліваю, каб базы дадзеных, і я паглядзець яго, хтосьці ўжо зразумеў гэта для мяне. Так. Такім чынам, людзі селі, і ўсё, што md5 хэш, што вы кладзеце ў, яны збіраюцца вярнуцца да вас нешта што гэтае слова. Калі я хэш іншае слова, як - Я не ведаю, - trees2. Я не хачу быць расчараваным на маіх пошукаў Google. Там гэта, trees2. Так шмат вэб-сайтаў да гэтага часу выкарыстоўваюць MD5 хэш. Кажуць, о, гэта бяспечна. Мы не захоўваць у выглядзе звычайнага тэксту. У нас ёсць MD5 хэш. І ўсё, што трэба зрабіць, гэта проста Google колькасць. Я нават не трэба вылічыць сябе. Я магу толькі Google яго, а хто-то ужо зрабіў гэта для мяне. Вось куча з іх. Вось куча пароляў. Так дакладна не выкарыстоўваць MD5 хэш, таму што ўсе вы павінны зрабіць, гэта Google гэта. Так што ж вы хочаце выкарыстоўваць замест гэтага? ОК. Тое, што называецца засолкі. Так што саленні з'яўляецца - вы, хлопцы, памятаеце, калі мы былі казаць аб выпадковых ў - Я не ўпэўнены, што PSet гэта было - быў ён PSet там ці чатыры? Мы гаварылі аб пошуку Іголка ў стозе сена. І ў PSet, ён сказаў, што вы маглі б на самай справе высветліць, што выпадковая генеруе, таму што хто-то ўжо пабег выпадковыя мільён разоў і проста роду сфармавалі тое, што яны вырабляюць. Тое, што вы хочаце зрабіць, гэта пакласці ў ўваходзе. Дык вось што саленні роду ёсць. Яны ўжо зразумелі, што саленні вяртае для кожнай працы. Так што саленні робіць вы паклалі ў солі. Вы кладзеце ў пэўным слова. І гэта будзе хэш гэтае слова ў залежнасці ад таго, што вы паклалі ў тут. Так што калі я хэш пароля адзін з гэтым Прысуд, ён збіраецца хэш інакш, калі я хэш пароль1 з іншым прапановай. Гэта свайго роду дае яго кудысьці пачаць для хэшавання, каб пачаць. Так што гэта нашмат складаней вылічыць, але вы яшчэ можна вылічыць яго, асабліва калі вы выкарыстоўваеце дрэнны соль. Людзі ўжо таксама высветлілі агульныя солі і высветлілі што гэта яно і ёсць. Выпадковыя солі нашмат лепш, але лепшы спосаб складаецца ў выкарыстанні тое, што называецца склеп. І тое, што склеп дазваляе рабіць - так што гэтыя функцыі з'яўляюцца ўжо пабудаваныя для вас. Многія забываюць, што, або яны забываюць выкарыстоўваць яго. Але калі я гляджу склеп PHP, склеп ўжо вяртае хэш-радок для мяне. І гэта на самай справе соліць яго шмат разоў і хэшы яго шмат разоў. Так што мы не павінны рабіць гэта. Усё, што Вам трэба зрабіць, гэта адправіць яго ў склепе. І гэта створыць вялікую хэш без Вы турбуючыся аб солі або што-небудзь. Таму што, калі б вы былі солі гэта, у вас ёсць памятаць, што соль вы выкарыстоўвалі таму што калі няма, то вы не можаце атрымаць ваш пароля назад без соль, якую вы выкарыстоўвалі. ОК. А таксама асабісты ідэнтыфікаваць інфармацыя. Так сацыяльнага страхавання, крэдытных карт - гэта даволі відавочна. Але часам людзі забываюць, як яна Працы ёсць, колькі інфармацыі вы на самай справе трэба знайсці нейкі адзін чалавек? Хтосьці правёў даследаванне аб гэта шлях таму. І гэта было, калі ў вас ёсць поўнае імя, вы не можаце знайсці хтосьці, што лёгка. Але што, калі ў вас ёсць поўнае імя і даты іх нараджэння? Ці дастаткова гэтага, каб вызначыць хтосьці спецыяльна? Што рабіць, калі ў вас ёсць сваё імя і адрас, што яны жывуць на? Ці дастаткова гэтага, каб знайсці каго-то? І вось, калі яны падвяргаюць сумневу, што асабістая ідэнтыфікацыйная інфармацыя, а што вы павінны турбавацца аб не раздаваць? Калі вы аддаеце нічога ідэнтыфікуюцца інфармацыя, што хто-то дае вам, вы маглі б патэнцыйна атрымаць пазоў. І мы, безумоўна, не хочам гэтага. Таму, калі вы кладзе свой сайт па-за, і вы сапраўды выдатна дызайн, мы спадзяемся, вы зрабілі дзіўны канчатковы праект. Любы вы як бы хочаце паставіць яго там. Вы хочаце, каб пераканацца, што ўсе вы прымаеце ад карыстальніка, калі гэта асабістая ідэнтыфікацыйная інфармацыя, вы хочаце пераканацца, што вы быўшы сапраўды асцярожныя з ім. Shell ўпырску. ОК. Shell ўпырску дазваляе зламысніку атрымаць доступ да вашай фактычнай каманднага радка ў вашым серверы. І так ён у стане выконваць код што вы не можаце кантраляваць. Давайце возьмем прыклад гэтага прыгожая радок прама тут. Калі мы ідзем на сайт зноў, я буду ўдавацца ў ўкаранення кода. Дык што ж гэта робіць - гэта таксама тое, што мы былі гледзячы на ​​перад. Мы дазваляючы карыстачу паставіць у любой ён хоча, і ён будзе раздрукаваць што вы хочаце. Так што я збіраюся паставіць на званок. Гэта трэба, - ён пачне шляхам аб'яднання. Так што дазволіць мне працаваць незалежна Каманда Запуск чалавека да і мая каманда. І я бягу сістэмную каманду. І гэтыя апошнія радкі - памятаю тое, што я гаварыў з вамі, хлопцы пра, у той час як у вас ёсць для кадавання гэта ў метадзе URL. Калі я запускаю гэта цяпер - Я пакажу вам сюды - вы ўбачыце, што я скончыў да запуску каманды. На самай справе гэта фактычнае сервер што мой сайт працуе на. Такім чынам, мы не хочам, каб, таму што я магу працаваць - гэты сервер не маё. Так што я не хачу сапсаваць яго сястра, сервер Маркуса. Але вы можаце запусціць некалькі каманд што небяспечныя. І патэнцыйна, можна выдаліць файлы, выдаляць каталогі. Я магу выдаліць пэўны каталог, калі Я хацеў, але я не хачу зрабіць гэта з Маркусам. Ён добры хлопец. Ён пазычыў мне свой сервер. Так што я збіраюся дазволіць яму прэч на добры. Так што мы не хочам выкарыстаць - мы не робім хочаце выкарыстоўваць Eval або сістэмы. Eval або сістэма дазваляе зрабіць гэтыя сістэмныя выклікі. Кіт сродкі ацэнкі. Сістэма азначае, што я пабег. Гэтым кіруе нешта ў сістэме. Але мы можам аб'явіць па-за законам гэтыя рэчы ў PHP, так што мы не выкарыстоўваем іх. І загрузка файлаў. Я збіраўся зрабіць дзіўны рэч з загрузкі файлаў. Але, як я сказаў вам, хлопцы, мой файл Загрузка рэч не працуе. Калі б мне прыйшлося загрузіць файл прама цяпер - калі б я быў, каб загрузіць файл, і гэта карціна - ў вас ёсць загрузкі рэч вось карціна. Гэта нармальна. Нічога не адбываецца. Але калі ў вас ёсць загрузкі файла, для прыклад, і карыстальнік сапраўды дадання файл PHP або выкананы файл ці нешта так, то вы маглі б патэнцыйна ёсць праблема. Гэта працуе да. На жаль для мяне, гэта не працуе больш. Калі я, напрыклад, загрузіць гэты файл, я не атрымліваюць дазвол на загрузку файл у сувязі з серверам ня быць маім. Такім чынам, хлопец сапраўды разумны. Такім чынам, мы не хочам - Я збіраюся паказаць вам, хлопцы - ОК, гэта толькі некаторыя сапраўды выдатна інструменты. Такім чынам, гэтыя - ісці ў - калі вы, хлопцы, Firefox - спадзяюся вы робіце. Там дзве дапаўненні званыя SQL Inject Я і Cross-Site Script мяне. Яны адкрываюць як мала бок бары на баку. І калі я павінен быў пайсці ў CS60 напрыклад - так, што ён робіць гэта выглядае для ўсе формы, якія - спадзяюся, я не буду атрымліваць ў бядзе для гэтага. Але ОК. Вось кантактны сістэмы. Таму, калі я пачынаю шукаць адтуліны ў сістэма, першае, што я раблю, гэта адкрыць гэты прыгожы невялікі інструмент на баку. І я збіраюся праверыць формы з аўто нападаў. І так, што гэта робіць ён будзе павольна адкрыць кучу браўзэраў. Вось куча браўзэраў. І ён спрабуе кожны камбінацыю з межсайтовый скріптінга што магчыма ёсць, калі вы бачыце на баку. І гэта дасць мне вынік накшталт таго, што адказ на гэтае пытанне. Ўсё пройдзе. Відавочна, што ўсе яны праходзяць. Я маю на ўвазе, што яны вельмі разумныя людзі там. Але калі б мне прыйшлося працаваць - У мяне было раз, перш чым, калі я запускаю гэта на канчатковых студэнцкіх праектаў. Я проста запусціць SQL Калі ласка, увядзіце Мяне ўсе розныя нападаў. І ён спрабуе SQL Inject гэтая выснова сервер. Так што, калі мы пракруціць ўніз, для Напрыклад, ён кажа - гэта добра, калі яна вяртае. Так што праверылі некаторыя пэўныя значэння. І сервер вярнуў Код, які быў адмоўным. Выдаліць часова. Гэта добра. Ён спрабуе ўсе гэтыя тэсты. Такім чынам, можна проста запусціць - Я хацеў бы знайсці сайт агенства хутка, што дазволіць мне - можа быць, CS50 краму. Нічога сабе, гэта будзе прыняць занадта доўга. Я дам першы тэст ня скончыць правоў. Так што гэта скардзіцца. Такім чынам, гэтыя тры рэчы. Гэтыя інструменты з'яўляюцца бясплатнымі. Вы можаце спампаваць іх і запусціць іх на ваш сайт, і ён скажа вам, калі ў вас ёсць крос-Site Scripting, калі ў вас ёсць SQL, калі ў вас ёсць нешта падобнае. Я як бы сапсаваць. Што важна - Такім чынам, ніколі не давярайце карыстальніку. Незалежна карыстальнік ўводзіць для вас, зрабіць што вы дэзінфікаваць яго, вы ачысціце яго, Вы праверце правільныя рэчы, што гэта дае вам тое, што вы хачу, каб ён даў вам. Заўсёды быць у курсе таго, што рамкі што вы на самай справе з дапамогай. Калі вы выкарыстоўваеце нешта накшталт пачатковай загрузкі - Я ведаю, вы, хлопцы, збіраецеся выкарыстоўваць загружацца, таму што ён збіраецца пайсці над гэтым у бліжэйшы час у класе - і Wordpress ці нешта ў гэтым родзе, звычайна гэта можа быць узламаны. І тады вы нават не ведаеце. Ты проста працуе свой сайт. І гэта зусім бяспечна. І вы ідзяце ўніз. Так што я на рыбалку вельмі рана. Але я хачу падзякаваць PenTest Labs. Я збіраюся паказаць вам, рабяты нешта называецца PenTest Labs. Калі вы, хлопцы сапраўды зацікаўлены ў што бяспека на самай справе, ёсць вэб-сайт пад PenTest Labs калі вы, хлопцы, ісці да яе прама цяпер. Ну, гэта не тое. Я проста хачу, каб запусціць яго, як гэта. Google кажа мне адказ. ОК. І яна вучыць выкарыстоўваць вас - дык гэта кажа, навучыцца вэб-пранікненне тэставанне на правільным шляху. Яна вучыць, - спадзяюся, вы маральнай асобай. Але яна вучыць, як вы можаце паглядзець на як вы можаце атрымаць ўнутры вэб-сайтаў. І калі вы даведаецеся, як можна трапіць ўнутр сайты, вы можаце даведацца, як абараніць сябе ад атрымання ўнутры вэб-сайтаў. Дазвольце мне павелічэння, таму што, можа быць, вы, хлопцы, ня гледзячы на ​​гэта права. Ад ін'екцыі SQL раскашэліцца, так роду, як я магу атрымаць ад SQL ўпырску раскашэліцца. І вы спампаваць гэтую віртуальную машыну. І віртуальная машына ўжо ідзе з вэб-сайтам, што ты збіраюся паспрабаваць яго. Вы спампаваць гэты файл PDF. І ён пакажа вам парадкова, што што вам трэба зрабіць, што вы праверыць. Гэта тое, што зламыснік на самай справе робіць, каб патрапіць унутр сайце. І некаторыя з гэтых рэчаў з'яўляецца складаным. Я хацеў бы перайсці больш рэчы з вамі, хлопцы. Але я хвалююся, што вы, хлопцы, ёсць на самай справе не - гэта тое, што я падышоў з вы, хлопцы, вэб-тэсты для тэставання на пранікненне. Не ведаю, што SQL з'яўляецца і тое, што - Семінар Карла Джэксана ўзрушаючая таксама. Вы, хлопцы, не ведаю, накшталт пра тое, што гэта такое. Але калі вы ідзяце на гэты сайт, і вы спампаваць гэтыя навучальныя праграмы і іх PDF-файлы, вы можаце зірнуць на свайго роду што плошча бяспекі сапраўды ў тэставанне на пранікненне, паглядзець, як вы можаце атрымаць ўнутры вэб-сайтаў і абароны сябе ад яго. Так што калі я раблю супер хуткі агляд, гэта будзе прадухіліць крос-Site Scripting. Вы хочаце выкарыстоўваць HTMLSpecialChars кожны тайм карыстач уводзіць нешта. Прадухіленне ін'екцыі SQL. Калі вы зробіце гэта, вы ўжо лепш, чым Гарвард быў калі яны атрымалі парушаныя. І пераканайцеся, што вашыя паролі не ў выглядзе звычайнага тэксту. Пераканайцеся, што вы не толькі адзін спосаб хэш іх, але што вы карыстаецеся склеп, PHP функцыя, я паказаў вам, хлопцы. Такім чынам, вы павінны быць добра. Акрамя таго, калі вашыя сябры дазваляюць, працаваць SQL Калі ласка, увядзіце мяне на сваіх сайтах. Запусціце межсайтовый скріптінга на сваіх сайтах. І вы ўбачыце, многія з гэтых сайтаў ёсць тона уразлівасцяў. Гэта неверагодна, наколькі людзі забываюць для дэзінфекцыі свае базы дадзеных або зрабіць упэўнены, што ўводу чалавека ня код сцэнара. ОК. Я, вядома, скончыўся вельмі рана. Але калі ў каго ёсць пытанні з нагоды нічога, што вы можаце здымаць мне пытанне. Так. Ідзі, ідзі. Залы: Я проста хачу спытаць, Вы можаце растлумачыць, як файл загрузіць роўна работ. Лучай Аранго: Так. Такім чынам, дазвольце мне паказаць вам файл загрузіць рэальны хуткі. Такім чынам, загрузка файлаў на сервер - праблема досціп загрузку файлаў прама цяпер, што - Я збіраюся адкрыць код так вы, хлопцы, см. код за кулісамі. І гэта загрузіць. Вось код файла карыстальніка. Мы спрабуем, каб увайсці ў гэты каталог тут. І мы спрабуем, як толькі мы ўваход файл, Исеть файл - таму, калі ёсць падаць у файлах, гэты вобраз, то мы стараемся, каб перанесьці яго тут. Мы захапіць файл тут. Метад POST, тып, малюнкаў і файлаў. І мы пасылаем гэты файл. І тое, як толькі мы атрымаем яго, таму, як толькі файл мае вобраз, мы спрабуем, каб адправіць яго у гэты каталог. Праблема ў тым, што вэб-сайт не адпусціў мяне ў гэты каталог, таму што ён не хоча, каб я вярнуўся. Яна не хоча, каб я пайшоў - Я павінен ісці - дык вось загрузіць. Вось малюнка. Я павінен прайсці ўвесь шлях назад у пачынаючы і паклаў яго там, а затым пайсці і пакласці яго ў каталог. Так што, калі я бег акно тэрмінала, і я хацеў перамясціць файл - [Неразборліва] бачу. Калі б я хацеў, каб перамясціць файл, у мяне ёсць паставіць імя файла, а затым Поўны шлях я хачу, каб адправіць яго. І тое сэрвэр ня даючы мне вярнуцца. І таму ён не дазваляючы мне дабрацца да гэтага файла. Але звычайна - так што ёсць код загрузіўшы файл. Так звычайна тое, што будзе адбывацца ў тым, што чалавек ня праверка, калі мой файл сканчаецца. JPEG, так што я хацелі б праверыць. Дазвольце мне адкрыць прыклад занадта рэальны хуткі. ОК. Гэты чалавек мае рацыю - так прыклад двух правярае калі preg_match - вось яна тут - каб пераканацца, што заканчваецца PHP, і гэта добра. Гэта добра. Але ёсць сапраўдны вялікі Праблема з гэтым. Гэта добра. Але калі б я павінен быў пакласці файл з імем myfavoritepicture.php.jpeg, я мог па-ранейшаму патэнцыйна пазбавіцца ад JPEG і запусціць it.k Гэта РНР небяспечна. Вы не хочаце, каб чалавек, каб мець магчымасць запусціць код на сваім сайце. Але тады. JPEG прапускае. Ідэя складаецца ў тым, што вы сапраўды хочаце зрабіць не прымаць файлы, А. Але, добра, што Вы сапраўды хочаце зрабіць, гэта пераканацца, што вы чытаеце над усім светам. І няма нічога. PHP ў ім. Там няма. PHP ў Увесь імя файла. Залы: Але вы маглі б пакласці. JPEG на канцы. Серверы яшчэ запусціць код. Лучай Аранго: Не, гэта не будзе запусціць у пачатку. Вы павінны вярнуцца і паспрабаваць каб убачыць, калі вы можаце - АЎДЫТОРЫЯ: Такім чынам, мы павінны - ОК, проста яшчэ адзін набор, які ўключае ў сябе - Лучай Аранго: Так. АЎДЫТОРЫЯ: ОК. Лучай Аранго: Так. ОК. Любыя іншыя пытанні? ОК. Я збіраюся пакінуць гэта і сартаваць з паспрабаваць убачыць, калі вы, хлопцы, можаце - іншыя з іх крыху больш ўскладняецца тым, што яны патрабуюць значна больш веданне SQL, чым проста пачынаючы веданне вэб-SQL з'яўляецца і што JavaScript з'яўляецца. Але я збіраюся паспрабаваць трымаць гэта, і, спадзяюся, вы, хлопцы, даведаецеся пра гэта і паспрабаваць зазірнуць у што вы можаце зрабіць і колькі прыкладаў вы можаце атрымаць праз. Любы, ёсць любы іншы пытанні пра гэта? Ідзем далей. Так, страляць, страляць. Так, ісці наперад. Ідзем далей. АЎДЫТОРЫЯ: ОК. Я чуў пра тое, як чароўныя двукоссі не дастаткова бяспечна. Лучай Аранго: Што - Чароўныя двукоссі? АЎДЫТОРЫЯ: Так. Так ён дадае - таму, калі вы ўводзіце нешта, ён заўсёды дадае двукоссі. Лучай Аранго: Так. Так. ОК. АЎДЫТОРЫЯ: І тады я, аднак, што працаваў, але тады я шукаў яго. І ён сказаў, што гэта не добра. Але я не ведаю, чаму. Лучай Аранго: Так. АЎДЫТОРЫЯ: Не выкарыстоўваць чароўныя двукоссі, таму што гэта не бяспечна. Лучай Аранго: ОК. Так чароўныя двукоссі, калі вы ўстаўляеце SQL а гэта ўжо дадае каштарыс для вас. АЎДЫТОРЫЯ: Гэта заўсёды дадае двукоссі вакол усё, што вы уставіў Лучай Аранго: Так. Такім чынам, праблема ў тым, што - Я зірнуць на - АЎДЫТОРЫЯ: Як гэта набыць SQL заяву? Ці я мяркую, што гэта можа быць як цытата выбраць. Лучай Аранго: Так, вам трэба добрых цытат для SQL. АЎДЫТОРЫЯ: Не, але сервер зробіць гэта за вас. Лучай Аранго: Гэтыя маленькія каціроўкі прама тут, гэтыя маленькія каціроўкі? АЎДЫТОРЫЯ: Так. Лучай Аранго: Так. Праблема ў тым, што вы можаце закомментируйте апошні - Добра, такім чынам, што я магу зрабіць, гэта я магу пракаментаваць з - так што давайце зірнем на - хай мне адкрыць файл ўводу тэксту. Дазвольце мне проста змяніць гэтую прама тут напрамую. ОК. Ці можаце вы, хлопцы, бачыце, што выразна? Што я магу зрабіць, гэта я магу пракаментаваць з апошняга. Гэта закомментируйте апошнюю. І тады я пакладу адзін тут, пакласці тут усё злыя рэчы. Такім чынам, карыстальнік на самай справе ўводу, праўда? Карыстальнік не уводзячы рэчы, праўда? Гэта тое, што я збіраюся ўваходу як чалавек спрабуе пракрасціся ўнутр. Я збіраюся паставіць у - гэта адна двукоссе. Гэта проста хвалістыя па памылцы. А потым, што код збіраецца зрабіць - шкада, я збіраюся ўзяць гэта. Што код збіраюся зрабіць, гэта ён збіраецца дадаць першы двукоссі тут. І ён збіраецца дадаць апошні двукоссі, а таксама. І гэта таксама збіраецца дадаць Нарэшце, у мінулым двукоссі. Але я каментуючы гэтыя цытаты вылучае, таму яны не працуюць. І я сканчаю гэтую цытату пазначыць тут. Вы разумееце? Вы страцілі? Я магу пракаментаваць апошнюю цытату знак, і клапаціцца аб Першы двукоссі. АЎДЫТОРЫЯ: І гэтак жа, аздабленне першы. Лучай Аранго: Так. І проста скончыць першы. Так, гэта дакладна. Гэта тое, што я магу зрабіць. Так. Любыя іншыя пытанні, як, што? Гэта вялікае пытанне. Няма, ды, можа быць. Будзем спадзявацца, што вы, хлопцы, будзе свайго роду робяць больш сэнсу, калі вы вывучаеце SQL і такія рэчы, як, што. Але пераканайцеся, што вы - трымаць гэтыя сродкі ў гадзіны. На жаль, гэтыя інструменты больш тут. Гэтыя інструменты з'яўляюцца вялікімі. Калі ў каго ёсць якія-небудзь пытанні, Вы таксама можаце па электроннай пошце мне. Гэта мой нармальны адрас электроннай пошты. А гэта мой працоўны адрас электроннай пошты, які калі я працую на морах. Добра, дзякуй. Дзякуй, хлопцы. Ты добра ісці. Вы не павінны застацца тут. Ня пляскаць. Гэта дзіўна. Добра, дзякуй, хлопцы.