Luciano Arango: OK, guys. Nama saya Luciano Arango. Saya mahasiswa tingkat kedua di Adams House. Dan kita akan bercakap tentang keselamatan web pertahanan aktif. Jadi saya bekerja untuk Pejabat Maklumat Keselamatan di LAUT. Dan sepanjang musim panas, saya interned di SeguraTec, yang merupakan maklumat yang syarikat keselamatan yang berkhidmat untuk Bank of Columbia. Yang kebanyakannya di mana saya belajar apa yang saya pelajari setakat ini. Dan jadi beberapa bahan yang kami akan pergi ke hari ini, kita tidak mempunyai benar-benar bercakap tentang di dalam kelas. Tetapi kita akan tidak lama lagi. Ia akan menjadi seperti SQL, JavaScript. Dan kita belum benar-benar pergi ke atasnya. Jadi saya boleh menyusun penerbangan melaluinya, dan anda mungkin tidak tahu beberapa perkara. Tetapi tidak lama lagi, anda akan belajar ia. Dan semuanya akan masuk akal. Juga perkara lain - tinggal beretika. Beberapa perkara yang anda belajar, anda boleh menggunakan dalam cara yang tidak beretika. Jika ia adalah milik anda, pasti cuba. Saya pasti memberi motivasi kepada anda lelaki untuk mencuba pelayan anda sendiri, cuba akan di dalamnya. Lihat jika anda boleh menembusi mereka, jika anda boleh mendapatkan di dalamnya. Tetapi bukan orang lain adalah. Polis tidak benar-benar suka jenaka dan keseluruhannya, kita meletakkan ini di sini. Kami main-main. Mereka mendapat benar-benar marah. Jadi pergilah ke laman web ini. Saya telah ia dibuka di sini. Ini adalah laman web, dan ia mempunyai sekumpulan contoh. Apa yang berlaku ialah contoh pertama umpama akan menjadi lebih mudah daripada contoh terakhir dalam erti kata yang bahawa contoh yang pertama benar-benar tidak selamat. Dan yang terakhir adalah jenis apa yang biasa orang keselamatan web akan lakukan. Tetapi anda masih jenis daripada mendapatkan sekitar itu. Dan kita akan memberi tumpuan kepada satu dan dua, contoh satu dan dua. OK. Mari kita mulakan dengan cross-site scripting. JavaScript dijalankan pada pelayar pelanggan. Ia adalah satu bahasa pengaturcaraan yang anda gunakan untuk menjalankan pada pelayar pelanggan supaya anda tidak perlu mengemaskini laman web dan kembali ke pelayan. Anda mempunyai ia berjalan. Sebagai contoh, Facebook, anda tidak perlu untuk memuat semula laman web untuk status baru kemaskini kepada datang. Ia menggunakan JavaScript untuk menjana semua perkara ini. Oleh itu, kita boleh menyuntik berniat jahat JavaScript ke dalam laman web. Dan dengan cara itu, apabila kita menghantarnya kepada seseorang, kita jenis boleh menghantar dengan beberapa kod yang kita mahu. Ada yang berterusan dan bukan berterusan JavaScript - cross-site yang berterusan dan bukan berterusan skrip, yang saya maksudkan. Dan perbezaan adalah bahawa berterusan adalah JavaScript yang akan disimpan di laman web. Dan bukan berterusan akan JavaScript yang akan sebenarnya hanya berlaku sekali. Jadi mari kita lihat contoh cepat sebenar. OK. Jadi laman web ini, mudah, tiada apa yang berlaku di sini. Dan kita akan cuba untuk memasukkan beberapa JavaScript. Jadi cara kita mula menulis JavaScript adalah kita bermula dengan skrip permulaan. Dan kita menutupnya dengan skrip. Kami hanya akan meletakkan mesej - Saya akan menunjukkan kepada anda - berjaga-jaga. Amaran adalah fungsi yang JavaScript menggunakan untuk memaparkan sesuatu. Jadi mari kita cuba cepat sebenar. Saya akan pergi, hello berjaga-jaga. Nah, saya terlupa untuk meletakkan - OK. Jadi, itu mudah. Kami meletakkan JavaScript di laman web, dan ia datang. Dan ia semacam hanya berlaku di laman web kami, bukan? Jadi ia kelihatan seperti ia tidak masalah, bukan? Maksud saya, bagaimana anda boleh menggunakan ini dengan niat jahat? Jadi cara bahawa penggodam melakukan ini adalah benar-benar mudah. Mereka akan merebutnya. Mereka boleh menghantar maklumat ini kepada anda. Jika saya akan menghantar link ini kepada anda sekarang, dan anda membukanya, ia akan berkata, hello, mengatakan bahawa laman web saya memberitahu anda hello. Dan jadi jika saya mengatakan sesuatu yang sedikit lebih bijak, jika saya tarik sehingga satu JavaScript fungsi saya jenis daripada sudah menulis - tetapi jika anda melihat ia, saya akan pergi Produk berlebihan sebelum saya menulisnya. Jadi, kita akan untuk menetapkan tamat masa yang. Kami akan menunggu pasangan saat. Malah, kita akan menunggu, jika Saya tidak salah, lima saat. Ini pergi dalam milisaat. Dan kemudian apa yang kita akan lakukan ialah kita akan memberi amaran bahawa log masuk tamat masa untuk log masuk kembali masuk Dan kita akan menukar lokasi ke lokasi yang berbeza. Jadi, jika saya menghantar laman web ini kepada seseorang, mereka akan menjadi melayari sekitar, tenang. Tiada apa-apa yang berlaku. Dan dalam lima saat, ia akan berkata, log masuk anda tamat masa. Sila log masuk semula Apabila mereka klik OK, saya akan membawa mereka ke laman web lain. Mungkin, laman web ini akan sama dengan laman web yang mereka berada dalam sebelum ini. Dan mereka akan log mereka kelayakan ke dalam laman web saya daripada laman web mereka. Dan jadi saya boleh menghantar orang yang e-mel dengan pautan ini. Saya berkata, oh, inilah pautan. Ini adalah sebuah bank, sebagai contoh. Saya katakan, di sini, pergi pada pautan ini. Dan apabila mereka hantar, mereka akan melayari sekitar. Saya boleh tunggu 15 saat, 20 saat, dan kemudian pop yang sila log balik menandatangani semula. Anda semua boleh cuba dengan lebih banyak perkara. Ia rumit kerana anda semua tidak pernah melihat JavaScript, jadi anda mungkin tidak tahu sesetengah fungsi. Tetapi semua yang anda perlu lakukan adalah permulaan dengan skrip, berakhir dengan skrip. Dan anda boleh letakkan apa-apa di tengah-tengah. Amaran fungsi, menunggu. Lokasi tingkap membawa anda ke lokasi baru. Tetapi anda boleh berbuat demikian lebih. Dan jadi idea adalah bahawa kita ambil yang luar. Jika saya pergi ke contoh dua, dan saya dimasukkan ke dalam kod ini sama, ia tidak akan bekerja. Jadi ia mencetak semua keluar kerana apa laman web ini asalnya tidak adalah jika saya letakkan apa-apa di sini, ia akan mencetak di sini. Jadi ia tidak mencetak apa-apa keluar. Contoh ini sebenarnya memeriksa untuk melihat jika skrip adalah di sana. Jadi yeah, teruskan. Bertanya kepada saya. PENONTON: Adakah tidak menghantar yang mendapatkan atau pos permintaan? Luciano Arango: Yeah. mereka menghantar permintaan mendapatkan. PENONTON: Ia adalah? Luciano Arango: Yeah. Juga pelayar menggunakan permintaan pos. Tetapi saya cuba untuk menunjukkan permintaan mendapatkan supaya kita dapat melihat apa yang sebenarnya berlaku. Dan jadi jika kita melihat kod ini - jadi ia tidak berfungsi lagi. Dan jika kita lihat kod ini, ia akan menjadi contoh dua. Apa yang orang ini lakukan, orang yang bertanggungjawab bagi penyemak imbas ini - membuka, OK - menggantikan skrip perkataan. Ini adalah PHP, yang anda semua mungkin telah melihat sedikit yet. Dia hanya menggantikan skrip perkataan dengan nama. Jadi walau bagaimanapun, jika saya teruskan dan hanya dimasukkan ke dalam - jika saya merebut kod saya sekali lagi, dan saya akan untuk mengubah suai hanya sedikit. Sebaliknya skrip, saya akan menukar ia untuk skrip dengan modal R. Dan kita akan melihat jika kod ini berfungsi. Jadi ia tidak mencetak, yang merupakan satu petanda yang baik. Dan mudah-mudahan dalam dua saat, ia akan muncul. Log masuk anda tamat masa. OK. Itu boleh. Jadi memeriksa skrip mungkin tidak semestinya bekerja. Orang - ia juga boleh menyemak skrip huruf besar, skrip huruf kecil, kes str membandingkan, memastikan mereka yang sama. Tetapi penggodam ini masih boleh berbuat semacam apa kami lakukan pada Vigenere apabila kita berpindah kembali pasangan aksara, bergerak ke hadapan. Dan ia boleh memikirkan bagaimana untuk meletakkan skrip kembali di sana jadi ia boleh menyuntik skrip itu. Jadi apa yang anda mahu menggunakan adalah htmlspecialchars untuk melindungi laman web anda. Dan apa yang ini adalah ia membuat memastikan bahawa apa yang anda masukkan ke dalam - sebagai contoh, sebut harga atau ini lebih besar daripada atau kurang daripada - digantikan dengan sesuatu yang yang tidak akan - biarlah saya mengezum masuk sini - yang Ampersand sebenar. Ia akan menggantikan mereka HTML khas watak-watak yang kita akan melihat apabila kita bercakap tentang - oh, ini akan membawa aku kepada - watak-watak ini di sini. Ini menandakan bahawa sesuatu akan datang. Untuk HTML, yang kurungan bermula memberitahu kita bahawa sesuatu Berkaitan HTML akan datang. Dan kita mahu menghapuskan itu. Kami tidak mahu meletakkan HTML ke dalam website.k Kita tidak mahu pengguna untuk menjadi dapat meletakkan sesuatu di laman web mereka yang boleh menjejaskan laman web mereka, seperti skrip atau HTML atau sesuatu seperti itu. Apa yang penting ialah anda membersihkan input pengguna. Supaya pengguna boleh input banyak perkara. Dia boleh input sekumpulan barangan untuk mencuba untuk menipu pelayar anda masih menjalankan kod skrip ini. Apa yang anda mahu lakukan adalah tidak hanya melihat untuk skrip, tetapi mencari segala-galanya yang boleh berniat jahat. Dan htmlspecialchars akan berbuat demikian untuk anda, jadi anda tidak perlu bimbang mengenainya. Tetapi jangan cuba melakukan sendiri jenis dengan kod anda sendiri. Adakah semua orang jelas mengenai XSS? OK. Mari kita pergi ke suntikan SQL. Jadi suntikan SQL mungkin adalah nombor satu kelemahan di laman web yang berbeza. Maksud saya, contoh yang baik - Saya hanya menyelidik jauh untuk perkara ini. Dan saya mendapati artikel ini hebat, di mana Saya melihat bahawa Harvard telah dilanggar, telah digodam. Dan saya tertanya-tanya, baik, bagaimana mereka akan melakukannya? Harvard adalah yang paling hebat, paling menjamin universiti sebelum ini. Betul? Nah, untuk melanggar pelayan, penggodam menggunakan teknik yang dipanggil suntikan SQL. Jadi ini berlaku pada hari ke hari asas. Orang lupa untuk mengambil kira untuk suntikan SQL. Harvard tidak. Saya rasa ia mengatakan di sini, Princeton, Stanford, Cornell. Jadi bagaimana kita - jadi apa yang SQL ini suntikan yang membawa semua ini orang ramai sehingga? OK. Jadi SQL adalah bahasa pengaturcaraan yang kita gunakan untuk mengakses pangkalan data. Apa yang kita lakukan ialah kita pilih - jadi apa ini berbunyi sekarang ialah pilih segala-galanya dari meja. SQL, ia berubah ke dalam pangkalan data ini yang mempunyai jadual penuh dengan maklumat. Jadi pilih segala-galanya daripada pengguna di mana nama adalah nama pengguna. Betul? Cukup mudah. Idea suntikan SQL ialah kita memasukkan beberapa kod berniat jahat yang akan menipu pelayan ke dalam menjalankan sesuatu yang berbeza daripada apa yang asalnya telah berjalan. Jadi katakan untuk nama pengguna, kita masukkan ke dalam atau 1 sama 1. Jadi kita masukkan ke dalam atau 1 sama 1. Cara ia akan baca sekarang akan pilih daripada pengguna, segala-galanya daripada pengguna - ini adalah segala-galanya - di mana nama adalah nama pengguna, tetapi nama pengguna adalah atau 1 sama 1. Jadi nama apa atau 1 sama 1. 1 sama 1 selalunya benar. Jadi ini akan sentiasa kembali maklumat daripada pengguna. OK. Kami tidak perlu mempunyai nama pengguna yang betul. Kami hanya boleh mempunyai apa-apa yang kita mahu, dan ia akan kembali maklumat yang kita perlukan. Mari kita lihat contoh yang lain. Jika kita telah memilih segala-galanya daripada pengguna, di mana nama adalah pengguna JADUAL DROP - jadi apa yang anda berfikir kemahuan ini lakukan sekiranya saya dimasukkan ke dalam nama pengguna yang sebagai pengguna DROP TABLE? Sesiapa yang mempunyai idea? Ya. PENONTON: Ia akan memberitahu ia membuang semua jadual. Luciano Arango: Ia akan memberitahu kita untuk membuang segala-galanya dalam laman web ini, segala-galanya dalam pangkalan data. Dan apa yang orang menggunakan ini untuk - jadi Saya akan menunjukkan kepada anda semua. Saya dilumpuhkan menjatuhkan jadual kerana saya tidak mahu anda lelaki untuk menggugurkan jadual saya. Mari kita lihat ini. Jadi ini hanya menarik sehingga maklumat yang untuk orang tertentu. Jadi bagaimana kita tahu jika ini adalah terjejas oleh suntikan SQL. Kami akan memeriksa cepat sebenar jika kita boleh meletakkan sesuatu - biarlah saya tulis kod ini. Saya akan pergi ke dalam satu saat. Saya akan meletakkan akar dan 1 sama 1. Ini di sini, ini peratus tanda 23 - apa yang ia benar-benar adalah, jika saya melihat di sini di - cara HTML mengambil masa dalam nombor, jika anda lihat apabila saya dimasukkan ke dalam ruang yang di sini - jika saya ruang sesuatu di sini, ia berubah kepada peratus 2. Adakah anda semua melihat ini di sini apabila saya dimasukkan ke dalam ruang? Cara ia berfungsi ialah anda hanya boleh menghantar nilai ASCII melalui HTML. Jadi ia menggantikan, sebagai contoh, ruang dengan peratus 20. Saya tidak tahu jika anda semua telah melihat bahawa sebelum ini. Ia menggantikan satu hashtag dengan peratus 23. Kita perlu hashtag di akhir atau Penyataan supaya kami dapat memberitahu pangkalan data untuk lupa untuk memberi komen di luar koma bernoktah ini lalu pada akhir. Kami mahu ia tidak berfikir tentang itu. Kami hanya mahu ia berjalan segala-galanya yang kita ada terlebih dahulu dan mengulas bahawa keluar. Mari kita lihat ia. Jadi jika saya meletakkan sesuatu yang salah - katakan sebagai contoh, saya meletakkan 2 sama 1, ia tidak memberi saya apa-apa. Apabila saya dimasukkan ke dalam 1 sama 1, dan ia kembali sesuatu, ini memberitahu saya bahawa ini adalah terdedah kepada suntikan SQL. Saya tahu sekarang bahawa apa sahaja Saya meletakkan selepas ini - dan sebagai contoh, DROP JADUAL atau sesuatu seperti itu pasti akan berfungsi. Saya tahu ia terdedah kepada suntikan SQL kerana saya tahu bahawa di bawah hood, ia membiarkan saya melakukan 1 sama 1 perkara. OK? Dan jika kita melihat ini yang lain, nombor dua dan nombor tiga, ia akan melakukan lebih sedikit menyemak di bawah hud dengan apa yang ada. Jadi sesiapa sahaja membolehkan penurunan apa-apa lagi atau cuba? Adakah anda semua jenis mendapatkan SQL lagi? Kerana saya tahu anda semua tidak mempunyai melihatnya lagi, jadi ia adalah jenis mengelirukan untuk anda semua. Mari kita melihat. Jadi apakah cara untuk mengelakkan SQLI? OK. Jadi ini adalah benar-benar penting kerana anda lelaki pasti mahu mengelakkan ini di laman web anda. Jika tidak, semua rakan-rakan anda akan mengusik kerana anda apabila mereka drop semua meja anda. Jadi idea adalah bahawa anda membaiki SQL dengan cara yang tertentu, sedangkan anda sepadan apa input pengguna dengan rentetan tertentu. Jadi cara ini kerja-kerja adalah anda menyediakan pangkalan data. Anda memilih nama, warna, dan kalori daripada pangkalan data yang dikenali sebagai buah-buahan. Dan kemudian di mana kalori adalah kurang daripada, dan kami meletakkan tanda tanya ada mengatakan kita akan input sesuatu dalam satu saat. Dan warna sama, dan kami meletakkan soalan tanda mengatakan kita akan sesuatu input dalam kedua juga. OK? Dan kemudian kita melaksanakannya, meletakkan di 150 dan merah. Dan ini akan periksa untuk memastikan bahawa kedua-dua - pelbagai ini akan memastikan bahawa ini dua adalah integer dan bahawa ini adalah rentetan. Kemudian kita pergi, dan kami mengambil semua, kami memasukkannya ke dalam merah. Ini bermakna kita mengambil semua. Ini bermakna kita sebenarnya melaksanakan SQL kenyataan dan meletakkannya kembali dalam merah. Di sini kita melakukan perkara yang sama, tetapi kita melakukan perkara yang sama untuk kuning. Dan kita mengambil semua. Dan dengan cara ini, kita menghalang pengguna daripada dapat input sesuatu bahawa tidak apa yang kita dinyatakan, tali atau integer, sebagai contoh. Saya bercakap lebih awal mengenai bergantung pada orang lain. Apabila kamu memulakan projek anda, anda yang paling pasti akan menggunakan Bootstrap atau sesuatu yang serupa. Adakah anda semua pernah menggunakan Wordpress? Mungkin anda semua telah menggunakan Wordpress paling mungkin. Jadi masalah dengan menggunakan barang orang lain - Saya hanya akan cepat sebenar Google Kelemahan Wordpress. Jika saya tarik ini sehingga sekarang - Saya benar-benar melakukan kedua-dua Google. Kita dapat melihat bahawa Wordpress - ini bertarikh September '12. 26 dikemas kini. Konfigurasi lalai daripada Wordpress sebelum 3.6 tidak menghalang ini Gambar tertentu, yang mungkin memudahkan serangan cross-site scripting. Jadi cerita cepat, sebaik sahaja kami telah bekerja dengan - jadi saya, pada musim panas, bekerja satu latihan. Dan kita bekerja dengan jenis seperti sebuah syarikat kad kredit yang besar. Dan mereka bergantung kepada sesuatu yang dinamakan - Saya tidak tahu jika anda semua pernah bermain dengan produk yang dipanggil Joomla. Joomla merupakan produk yang digunakan untuk kawalan - jenis yang sama dengan Wordpress, yang digunakan untuk membina laman web. Jadi mereka mempunyai laman web mereka bekerja di Joomla. Ini sebenarnya adalah kad kredit syarikat di Colombia. Saya akan membawa anda kepada mereka laman web cepat sebenar. Jadi mereka menggunakan Joomla. Dan mereka telah tidak dikemaskini Joomla untuk tambahan terbaru. Dan sebagainya apabila kita telah mengambil melihat kod mereka, kami dapat benar-benar masuk ke dalam kod mereka dan mencuri semua Maklumat kad kredit bahawa mereka mempunyai, semua nombor kad kredit, nama, alamat. Dan ini adalah hanya - dan kod mereka adalah betul-betul halus. Mereka mempunyai kod besar. Ia adalah semua keselamatan. Mereka memeriksa semua pangkalan data. Mereka memastikan cross-site skrip adalah denda. Tetapi mereka menggunakan sesuatu yang tidak dikemaskini, yang tidak selamat. Dan supaya membawa mereka kepada - jadi anda semua pasti akan menggunakan lain kod, rangka kerja orang lain rakyat untuk membina laman web anda. Pastikan mereka selamat kerana kadang-kadang bukan kamu, salah satu yang membuat kesilapan. Tetapi orang lain membuat kesilapan, dan maka anda jatuh ke bawah kerana itu. Kata laluan dan PII. Jadi kata laluan. OK. Mari kita lihat kata laluan cepat sebenar. OK. Sila beritahu saya bahawa semua orang menggunakan selamat - Saya berharap semua orang di sini menggunakan kata laluan yang selamat. Saya hanya membiarkan yang sebagai satu andaian. Jadi anda semua pasti akan menyimpan kata laluan untuk laman web anda. Anda akan membuat sesuatu seperti log masuk atau sesuatu seperti itu. Apa yang penting adalah untuk tidak menyimpan kata laluan dalam teks biasa. Ini adalah sangat penting. Anda tidak mahu untuk menyimpan kata laluan di dalam teks biasa. Dan anda pasti tidak benar-benar mahu menyimpannya dalam satu cara hash. Jadi apa yang salah satu cara hash adalah bahawa apabila anda menjana kata, apabila anda meletakkan ini perkataan ke dalam fungsi hash, ia akan menjana kembali semacam samar mesej atau set samar kunci. Saya akan menunjukkan kepada anda contoh. Saya akan hash perkataan mereka password1. Hash MD5 Jadi akan kembali saya beberapa jenis maklumat pelik. Masalahnya ialah bahawa orang di luar sana yang suka pergi ke laman web yang mempunyai sudah digambarkan jenis semua Hash MD5. Apa yang mereka sedang mereka duduk di mereka komputer, dan mereka dicincang setiap perkataan mungkin tunggal di luar sana sehingga mereka mendapat jenis apa ini. Jika saya melihat ini sehingga - Saya hanya meraih hash ini. Jika saya mendapat hash ini dari - jika saya pergi ke laman web, dan saya dapati hash ini kerana saya pergi ke pangkalan data, dan saya melihat ia, seseorang sudah digambarkan ia keluar bagi saya. Yeah. Jadi orang-orang duduk, dan apa sahaja MD5 hash yang anda masukkan ke dalam, mereka akan kembali kepada kamu tentang yang yang perkataan. Jika saya hash perkataan lain, seperti - Saya tidak tahu - trees2. Saya tidak mahu menjadi kecewa oleh carian Google saya. Terdapat ia, trees2. Jadi banyak laman web masih menggunakan MD5 hash. Mereka berkata, oh, ia selamat. Kami tidak menyimpan dalam teks biasa. Kami mempunyai hash MD5 ini. Dan semua saya perlu lakukan adalah hanya Google nombor. Saya tidak perlu mengira diri saya. Saya hanya boleh Google, dan seseorang sudah ia lakukan untuk saya. Berikut adalah sekumpulan mereka. Berikut adalah sekumpulan kata laluan. Jadi pastinya tidak menggunakan MD5 hash, kerana semua yang anda perlu lakukan adalah Google ia. Jadi, apa yang anda mahu menggunakan bukan? OK. Sesuatu yang dinamakan pengasinan. Jadi apa pengasinan adalah - anda semua masih ingat ketika kami berada bercakap tentang rawak dalam - Saya tidak pasti apa yang ia adalah Serangga - telah ia Serangga sana atau empat? Kami bercakap tentang mencari jarum dalam sisa rumput kering itu. Dan dalam Serangga, ia berkata anda boleh sebenarnya memikirkan apa yang rawak menjana kerana seseorang sudah berlari rawak satu juta kali dan hanya jenis membentuk apa yang mereka menjana. Apa yang anda mahu lakukan adalah dimasukkan ke dalam input. Jadi itulah yang pengasinan jenis adalah. Mereka sudah menemukan apa pengasinan pulangan bagi setiap kerja. Jadi apa pengasinan tidak adalah anda masukkan ke dalam garam. Anda masukkan ke dalam perkataan tertentu. Dan ia akan hash perkataan yang bergantung pada apa yang anda masukkan di sini. Jadi jika saya hash kata laluan satu dengan ini ayat, ia akan hash berbeza jika saya hash password1 dengan suatu hukuman yang lain. Ia semacam memberikan ia tempat untuk mula untuk hashing bermula. Jadi ia banyak sukar untuk mengira, tetapi anda masih boleh mengira, terutama jika anda menggunakan garam yang tidak baik. Orang telah juga digambarkan garam biasa dan digambarkan apa bahawa ia adalah. Garam rawak adalah lebih baik, tetapi cara terbaik adalah dengan menggunakan sesuatu yang dinamakan crypt. Dan apa yang kubur membolehkan anda jangan - jadi fungsi-fungsi ini telah dibina untuk anda. Ramai orang lupa bahawa, atau mereka lupa untuk menggunakannya. Tetapi jika saya mencari kubur PHP, kubur sudah kembali rentetan hash untuk saya. Dan ia sebenarnya garam ia banyak kali dan Hash ia banyak kali. Oleh itu, kita tidak perlu melakukan ini. Jadi apa yang anda perlu lakukan adalah hantar ke dalam kubur. Dan ia akan mewujudkan hash besar tanpa anda perlu bimbang tentang garam atau apa-apa. Kerana jika anda adalah untuk garam, anda perlu untuk mengingati apa yang anda digunakan garam kerana jika tidak, anda tidak boleh mendapatkan anda kata laluan kembali tanpa garam yang anda gunakan. OK. Dan juga boleh dikenal pasti peribadi maklumat. Keselamatan supaya sosial, kad kredit - yang cukup jelas. Tetapi kadang-kadang orang lupa cara ia kerja-kerja, berapa banyak maklumat yang anda sebenarnya perlu mencari beberapa satu orang? Seseorang melakukan kajian mengenai cara yang ini kembali. Dan ia adalah seperti, jika anda mempunyai nama penuh, anda tidak dapat mencari seseorang yang mudah. Tetapi bagaimana jika anda mempunyai nama penuh dan tarikh kelahiran mereka? Adakah itu cukup untuk mengenal pasti seseorang khusus? Bagaimana jika anda mempunyai nama dan mereka yang alamat jalan yang mereka hidup di? Adakah itu cukup untuk mencari seseorang? Dan itu apabila mereka mempersoalkan, apakah maklumat pengenalan peribadi, dan apa yang anda perlu bimbang tentang tidak memberikan? Jika anda memberi dikenal pasti peribadi maklumat bahawa seseorang memberikan anda, anda berpotensi mendapatkan didakwa. Dan kita pasti tidak mahu itu. Oleh itu, apabila anda meletakkan laman web anda keluar, dan anda telah benar-benar sejuk reka bentuk, diharapkan anda dibuat projek akhir hebat. Apa-apa jenis anda mahu meletakkannya di luar sana. Anda ingin memastikan bahawa apa sahaja anda mengambil dari pengguna, jika ia maklumat pengenalan peribadi, anda ingin memastikan anda benar-benar menjadi berhati-hati dengannya. Suntikan Shell. OK. Suntikan Shell membolehkan penceroboh mendapat akses kepada baris arahan sebenar anda dalam pelayan anda. Dan sebagainya dia mampu untuk menjalankan kod bahawa anda tidak dapat mengawal. Mari kita mengambil satu contoh ini tali cantik di sini. Jika kita pergi ke laman web ini sekali lagi, saya akan pergi ke dalam suntikan kod. Jadi apa ini tidak adalah - ia juga apa yang kami melihat sebelum ini. Kami membiarkan pengguna dimasukkan ke dalam apa sahaja yang dia mahu, dan ia akan mencetak apa sahaja yang anda mahu. Jadi, saya akan meletakkan panggilan. Apa yang dilakukan adalah - ia akan bermula dengan concatenating. Jadi ia akan membiarkan saya menjalankan apa sahaja arahan berjalan orang itu sebelum dan arahan saya. Dan saya menjalankan perintah sistem. Dan ini tali terakhir adalah - ingat apa yang saya bercakap dengan anda semua tentang, manakala anda perlu mengekod ia dalam kaedah URL. Jika saya berjalan ini sekarang - Saya akan menunjukkan kepada anda di sini - anda akan melihat bahawa saya berakhir sehingga berjalan perintah. Ini sebenarnya pelayan sebenar bahawa laman web saya berjalan di. Maka itu kita tidak mahu itu, kerana saya boleh berjalan - pelayan ini tidak lombong. Jadi, saya tidak mahu merosakkan beliau kakak, pelayan Marcus ini. Tetapi anda boleh menjalankan lebih arahan yang berbahaya. Dan berpotensi, anda boleh memadam fail, keluarkan direktori. Saya boleh membuang direktori tertentu jika Saya mahu, tetapi saya tidak mahu untuk berbuat demikian kepada Marcus. Dia seorang lelaki yang baik. Dia membiarkan saya meminjam pelayan beliau. Jadi saya akan membenarkan beliau off pada yang baik. Jadi apa yang kita tidak mahu untuk digunakan - kita tidak mahu menggunakan eval atau sistem. Eval atau sistem membolehkan kita untuk menjadikan panggilan sistem. Cara eval menilai. Sistem bermakna apa yang saya berlari. Ia menjalankan sesuatu dalam sistem. Tetapi kita boleh mengharamkan perkara-perkara ini dalam PHP supaya kita tidak menggunakannya. Dan fail muat naik. Saya akan melakukan sesuatu yang menggerunkan perkara dengan muat naik fail. Tetapi seperti saya memberitahu anda semua, fail saya perkara upload tidak berfungsi. Jika saya masukkan gambar sekarang - jika saya memuat naik fail, dan ia gambaran yang - anda mempunyai perkara upload itulah gambar. Itu denda. Tiada apa-apa yang berlaku. Tetapi jika anda mempunyai fail memuat naik, untuk Sebagai contoh, dan pengguna sebenarnya Gambar fail PHP atau fail exe atau sesuatu seperti itu, maka anda boleh berpotensi mempunyai masalah. Ini bekerja sebelum ini. Malangnya bagi saya, ia adalah tidak berfungsi lagi. Jika saya, sebagai contoh, memuat naik fail ini, saya tidak mendapat kebenaran untuk memuat naik fail kerana pelayan bukan saya. Jadi lelaki itu benar-benar pintar. Maka itu kita tidak mahu - Saya akan menunjukkan kepada anda semua - OK, ini adalah beberapa alat benar-benar sejuk. Jadi ini - pergi ke dalam - jika anda lelaki itu mempunyai Firefox - diharapkan anda lakukan. Terdapat dua add Firefox dipanggil SQL Uniject Saya dan Cross-Site Script Me. Mereka membuka sedikit sebelah bar di sebelah. Dan jika saya pergi ke CS60 sebagai contoh - jadi apa yang ia adalah ia kelihatan untuk semua bentuk-bentuk yang - mudah-mudahan, saya tidak akan mendapatkan dalam masalah ini. Tetapi OK. Berikut adalah sistem pin. Oleh itu, apabila saya mula mencari lubang pada sistem, perkara pertama yang saya lakukan adalah membuka sedikit yang indah ini alat di sebelah. Dan saya akan menguji bentuk dengan serangan automatik. Dan jadi apa ini adalah ia akan perlahan-lahan membuka sekumpulan pelayar. Berikut adalah sekumpulan pelayar. Dan ia cuba setiap gabungan tunggal daripada cross-site scripting bahawa terdapat mungkin iaitu, jika yang anda lihat di sebelah. Dan ia akan memberikan saya hasil yang jenis apa jawapannya. Semua lulus. Jelas sekali, mereka semua lulus. Maksud saya, mereka benar-benar pintar orang di atas sana. Tetapi jika aku berjalan - Saya mempunyai kali sebelum apabila saya berjalan ini projek-projek akhir pelajar. Saya hanya menjalankan SQL Suntik Me dengan semua serangan yang berbeza. Dan ia cuba untuk SQL Uniject server pin ini. Jadi jika kita tatal ke bawah, untuk Sebagai contoh, ia berkata - ini adalah baik jika ia kembali. Jadi ia diuji beberapa nilai-nilai tertentu. Dan pelayan itu kembali yang kod yang negatif. Keluarkan buat sementara waktu. Ini adalah baik. Ia cuba semua ujian ini. Jadi, anda hanya boleh berjalan - Saya ingin saya boleh mencari laman web sebenar cepat yang akan membenarkan saya - mungkin kedai CS50 itu. Wow, ini akan mengambil terlalu lama. Saya akan memberitahu ujian pertama tidak selesai betul. Jadi ia mengadu. Jadi ini adalah tiga perkara. Alat ini adalah percuma. Anda boleh memuat turun mereka dan menjalankan mereka di laman web anda, dan ia akan memberitahu anda jika anda skrip cross-site, jika anda mempunyai SQL, jika anda mempunyai sesuatu yang sebagainya. Saya jenis kerunsingan sehingga. Apa yang penting - OK, jadi tidak pernah mempercayai pengguna. Apa sahaja input pengguna untuk anda, membuat pasti anda membersihkan, anda membersihkannya, anda menyemak untuk perkara-perkara yang betul, bahawa ia memberi anda apa yang anda mahu dia memberi anda. Sentiasa dikemas kini di apa rangka kerja bahawa anda benar-benar menggunakan. Jika anda menggunakan sesuatu seperti Bootstrap - Saya tahu anda semua akan menggunakan Bootstrap kerana dia akan pergi lebih ini tidak lama lagi di dalam kelas - dan Wordpress atau sesuatu seperti itu, biasanya ini boleh digodam. Dan kemudian anda tidak tahu. Anda hanya menjalankan laman web anda. Dan ia benar-benar selamat. Dan anda turun. Jadi saya benar-benar memancing awal. Tetapi saya ingin mengucapkan terima kasih Pentest Labs. Saya akan menunjukkan kepada anda semua sesuatu dipanggil Pentest Labs. Jika anda semua benar-benar berminat apa keselamatan benar-benar, ada laman web dipanggil Pentest Labs jika kamu pergi kepadanya sekarang. Oh, baik, itu bukan ia. Saya hanya akan berjalan seperti ini. Google memberitahu saya jawapannya. OK. Dan ia mengajar menggunakan anda - jadi ia berkata, belajar penembusan web menguji dengan cara yang betul. Ia mengajar anda - mudah-mudahan, anda seorang yang beretika. Tetapi ia mengajar anda bagaimana anda boleh melihat bagaimana anda boleh mendapatkan di dalam laman web. Dan jika anda belajar bagaimana anda boleh mendapatkan di dalam laman web, anda boleh belajar bagaimana untuk melindungi diri anda daripada mendapat di dalam laman web. Biar saya mengezum masuk kerana mungkin kamu tidak melihat hak ini. Dari suntikan SQL shell, jadi jenis bagaimana saya boleh mendapatkan dari SQL suntikan shell. Dan anda memuat turun mesin maya ini. Dan mesin maya sudah datang dengan laman web yang anda akan cuba ia. Anda memuat turun PDF ini. Dan ia akan menunjukkan kepada anda selaras dengan garis-apa yang yang anda perlu lakukan, apa yang anda lihat. Inilah yang sebenarnya penyerang tidak untuk masuk ke dalam laman web. Dan beberapa barangan ini adalah rumit. Saya ingin saya boleh pergi ke lebih perkara dengan anda semua. Tetapi saya bimbang bahawa kalian tidak mempunyai benar-benar - ini adalah apa yang saya pergi lebih dengan anda semua, ujian web untuk ujian penembusan. Tidak benar-benar tahu apa yang SQL dan apa - Seminar Carl Jackson adalah hebat juga. Kamu semua tidak tahu jenis apa ini. Tetapi jika anda pergi ke laman web ini, dan anda turun tutorial ini dan ini PDF, anda boleh lihat jenis apa bidang keselamatan benar-benar tidak dalam ujian penembusan, lihat bagaimana anda boleh masuk ke dalam laman web dan melindungi diri anda daripadanya. Jadi, jika saya membuat gambaran super cepat, ia akan mengelakkan cross-site scripting. Anda mahu menggunakan htmlspecialchars setiap masa sesuatu input pengguna. Mencegah suntikan SQL. Jika anda berbuat demikian, anda sudah lebih baik daripada Harvard adalah apabila mereka mendapat dilanggar. Dan pastikan kata laluan anda tidak berada dalam teks biasa. Pastikan anda tidak hanya satu cara hash mereka tetapi yang anda gunakan kubur, PHP fungsi yang saya menunjukkan kamu. Dengan cara itu, anda perlu menjadi baik. Juga, jika rakan-rakan anda memberitahu anda, jalankan Sql Suntik Me di laman web mereka. Jalankan cross-site scripting di laman web mereka. Dan anda akan melihat banyak laman web ini mempunyai satu tan kelemahan. Ia luar biasa berapa banyak orang lupa untuk membersihkan pangkalan data mereka atau membuat pasti apa yang memasukkan orang itu bukan kod skrip. OK. Saya jenis benar-benar berakhir awal. Dan sesiapa yang mempunyai apa-apa soalan mengenai apa-apa, anda boleh menembak saya soalan. Yeah. Pergi, pergi. PENONTON: Saya hanya ingin bertanya, anda boleh menjelaskan bagaimana fail memuat naik betul-betul kerja-kerja. Luciano Arango: Yeah. Jadi biarlah saya tunjukkan kepada anda fail memuat naik cepat sebenar. Jadi upload fail - masalah akal naik fail sekarang ialah - Saya akan membuka kod supaya anda lelaki melihat kod di sebalik tabir. Dan ia dimuat naik. Berikut adalah kod untuk pemuat naik fail ini. Kami cuba untuk pergi ke ini direktori di sini. Dan kita cuba, sebaik sahaja kami input fail, fail isset - jadi apabila terdapat memfailkan di FILES, imej itu, maka kita cuba untuk bergerak di sini. Kami merebut fail di sini. Kaedah ini adalah POST, jenis, imej, fail. Dan kita menghantar fail ini. Dan kemudian sekali kita mendapatkannya, jadi sekali fail mempunyai imej, kita sedang berusaha untuk menghantarnya untuk direktori ini. Masalahnya ialah bahawa laman web yang tidak membenarkan saya pergi ke direktori ini, kerana ia tidak mahu saya kembali. Ia tidak mahu saya pergi - Saya perlu pergi - jadi inilah muat naik. Berikut adalah imej. Saya perlu pergi semua perjalanan pulang ke bermula dan memasukkannya ke dalam sana dan kemudian pergi dan meletakkan ia ke dalam direktori. Jadi, jika saya berlari tetingkap terminal, dan saya mahu memindahkan fail - [Didengar] boleh melihatnya. Jika saya mahu memindahkan fail, saya mempunyai untuk meletakkan nama fail dan kemudian jalan lengkap saya mahu hantar ke. Dan maka pelayan tidak membiarkan saya kembali. Dan jadi ia tidak membiarkan saya dapat fail itu. Tetapi biasanya - jadi ada kod untuk memuat naik fail. Jadi biasanya apa yang akan berlaku ialah bahawa orang tidak memeriksa jika fail saya berakhir dengan. jpeg, jadi saya mahu untuk memeriksa. Izinkan saya membuka contoh terlalu nyata cepat. OK. Orang ini betul - jadi contoh dua adalah memeriksa jika preg_match - di sini ia adalah di sini - memastikan yang berakhir dengan PHP, yang baik. Ini adalah baik. Tetapi ada besar sebenar masalah dengan ini. Ini adalah baik. Tetapi jika aku menumpangkan fail yang dipanggil myfavoritepicture.php.jpeg, saya boleh masih berpotensi menghilangkan jpeg dan menjalankan it.k Yang PHP ini berbahaya. Anda tidak mahu orang yang dapat untuk menjalankan kod di laman web anda. Tetapi. Jpeg membolehkan ia lulus. Idea ini adalah apa yang anda benar-benar mahu melakukan tidak mengambil gambar, A. Tetapi, OK, apa yang anda benar-benar mahu lakukan adalah memastikan bahawa anda membaca ke atas seluruh dunia. Dan tiada apa-apa. Php di dalamnya. Tidak ada. Php dalam nama fail keseluruhan. PENONTON: Tetapi anda boleh meletakkan. jpeg pada akhirnya. Pelayan masih menjalankan kod. Luciano Arango: Tidak, ia tidak akan dijalankan pada permulaan. Anda perlu kembali dan cuba untuk melihat jika anda boleh - PENONTON: Oleh itu, kita perlu - OK, satu lagi set yang melibatkan - Luciano Arango: Yeah. PENONTON: OK. Luciano Arango: Yeah. OK. Apa-apa soalan lain? OK. Saya akan meninggalkan ini dan menyusun daripada cuba untuk melihat jika anda semua boleh - yang lain adalah lebih sedikit rumit kerana mereka memerlukan banyak ilmu SQL daripada sekadar pengetahuan permulaan web SQL adalah dan apa JavaScript. Tetapi saya akan cuba berbuat begitu, dan diharapkan anda semua akan belajar tentang perkara ini dan cuba untuk mengambil mengintip di apa yang anda boleh lakukan dan bagaimana banyak contoh anda boleh mendapatkan melalui. Sesiapa yang mempunyai apa-apa soalan tentang perkara ini? Teruskan. Ya, menembak, menembak. Ya, teruskan. Teruskan. PENONTON: OK. Jadi saya mendengar tentang bagaimana Petikan Magic tidak cukup selamat. Luciano Arango: Apa - Petikan Magic? PENONTON: Yeah. Jadi ia menambahkan - jadi setiap kali anda input sesuatu, ia sentiasa menambah petikan. Luciano Arango: Yeah. Yeah. OK. PENONTON: Dan kemudian saya walaupun yang bekerja, tetapi kemudian saya diperiksa ia sehingga. Dan ia mengatakan ia tidak baik. Tetapi saya tidak pasti mengapa. Luciano Arango: Yeah. PENONTON: Jangan gunakan Petikan Magic, kerana ia tidak selamat. Luciano Arango: OK. Petikan Jadi Magic adalah apabila anda memasukkan SQL dan ia sudah menambah petikan untuk anda. PENONTON: Ia sentiasa menambah sebut harga sekitar apa sahaja yang anda meletakkan masuk Luciano Arango: Yeah. Jadi masalah dengan itu adalah bahawa - Saya akan lihat - PENONTON: Bagaimana ia memperoleh pernyataan SQL? Atau saya rasa ia boleh menjadi seperti quote pilih. Luciano Arango: Ya, anda perlu sebut baik untuk SQL. PENONTON: Tidak, tetapi pelayan tidak untuk anda. Luciano Arango: Ini petikan kecil di sini, ini sebut harga sedikit? PENONTON: Yeah. Luciano Arango: Yeah. Masalahnya ialah bahawa anda boleh komentar yang lepas - OK, jadi apa yang boleh saya lakukan ialah saya boleh memberi komen keluar - jadi mari kita lihat - biarlah saya membuka edit teks fail. Biar saya menyunting laman ini di sini secara langsung. OK. Bolehkah anda semua melihat bahawa dengan jelas? Apa yang boleh saya lakukan ialah saya boleh memberi komen keluar yang terakhir. Ini akan mengulas keluar yang terakhir. Dan kemudian saya akan meletakkan satu di sini, letakkan barangan semua berniat jahat di sini. Sehingga pengguna sebenarnya memasukkan, bukan? Pengguna tidak memasukkan perkara, bukan? Ini adalah apa yang saya akan input orang yang cuba untuk masuk ke dalam. Saya akan dimasukkan ke dalam - itulah salah satu tanda petikan. Ia hanya berlekuk-lekuk dengan tidak sengaja. Kemudian apa kod adalah akan lakukan - maaf, saya akan mengambil ini keluar. Apa kod yang akan dilakukan ialah ia akan menambah yang pertama sebut harga menandakan sini. Dan ia akan menambah terakhir Tanda petikan juga. Dan ia juga akan menambah lepas, tanda petik lepas. Tetapi saya mengulas petikan ini menandakan, jadi mereka tidak dijalankan. Dan, Aku akan sebut harga ini menandakan di sini. Adakah anda faham? Adakah anda hilang? Saya boleh memberi komen petikan terakhir tanda, dan menjaga Tanda petikan pertama. PENONTON: hanya selesai Dan yang pertama. Luciano Arango: Yeah. Dan hanya selesai yang pertama. Ya, betul. Itulah yang boleh saya lakukan. Yeah. Lain-lain soalan seperti itu? Itu satu persoalan yang besar. Tidak, ya, mungkin. Mudah-mudahan, anda semua jenis akan membuat rasa lebih apabila anda belajar SQL dan perkara seperti itu. Tetapi pastikan anda - menyimpan alat ini dalam menonton. Maaf, alat ini di sini. Alat ini yang besar. Jika sesiapa yang mempunyai apa-apa soalan, anda juga boleh e-mel saya. Ini adalah e-mel biasa saya. Dan ini adalah e-mel kerja saya, yang apabila saya bekerja di LAUT. OK, terima kasih. Terima kasih, guys. Anda baik untuk pergi. Anda tidak perlu tinggal di sini. Jangan bertepuk. Itu yang pelik. OK, terima kasih, guys.