>> LUCIANO ARANGO: OK, guys.
Nama saya adalah Luciano Arango.
Saya seorang mahasiswa di Adams House.
Dan kita akan berbicara tentang pertahanan aktif keamanan web.
Jadi saya bekerja untuk Kantor Informasi Keamanan di LAUT.
Dan selama musim panas, saya magang di SeguraTec, yang merupakan informasi
perusahaan keamanan yang melayani untuk Bank of Columbia.
Itu sebagian besar di mana saya belajar apa yang telah saya pelajari sejauh ini.
>> Dan beberapa materi yang kita akan pergi ke hari, kita tidak
benar-benar berbicara tentang di kelas.
Tapi kita akan segera.
Ini akan menjadi seperti SQL, JavaScript.
Dan kita belum benar-benar pergi di atasnya.
Jadi saya dapat mengurutkan terbang melalui itu, dan Anda mungkin tidak tahu beberapa hal.
Namun segera, Anda akan mempelajarinya.
Dan itu semua akan masuk akal.
Juga satu hal lagi -
tetap etis.
Beberapa hal yang Anda pelajari, Anda bisa menggunakan cara-cara non-etis.
>> Jika itu Anda, pasti mencoba.
Saya pasti memotivasi kalian untuk mencoba server Anda sendiri, cobalah
masuk ke dalam mereka.
Lihat jika Anda dapat menembus mereka, jika Anda bisa mendapatkan di dalamnya.
Tapi tidak ada orang lain yang.
Polisi tidak benar-benar suka lelucon dan Secara keseluruhan, kami menempatkan ini di sini.
Kami main-main.
Mereka mendapatkan benar-benar marah.
>> Jadi kepala ke website ini.
Saya memiliki dibuka di sini.
Ini adalah sebuah situs web, dan memiliki banyak contoh.
Apa yang terjadi adalah bahwa contoh pertama adalah semacam akan menjadi jauh lebih mudah
dari contoh terakhir dalam arti bahwa contoh pertama
benar-benar tidak aman.
Dan yang terakhir adalah semacam apa biasa orang keamanan web yang akan dilakukan.
Tapi Anda masih bisa sort dari mendapatkan sekitar itu.
Dan kita akan berfokus pada satu dan dua, contoh satu dan dua.
>> OK.
Mari kita mulai dengan cross-site scripting.
The JavaScript dijalankan pada browser klien.
Ini adalah bahasa pemrograman yang Anda gunakan untuk berjalan di browser klien sehingga
Anda tidak perlu untuk memperbarui situs web dan kembali ke server.
Anda telah berjalan.
Sebagai contoh, Facebook, Anda tidak perlu untuk reload website untuk status baru
update untuk datang.
Ini menggunakan JavaScript untuk menghasilkan semua hal ini.
Jadi kita bisa menyuntikkan berbahaya JavaScript ke dalam website.
Dan dengan cara itu, ketika kita mengirim link untuk seseorang, kita bisa semacam mengirimkannya dengan
beberapa kode yang kita inginkan.
>> Ada gigih dan non-persistent JavaScript -
gigih dan non-persistent cross-site scripting, maksudku.
Dan perbedaan adalah bahwa persisten adalah JavaScript yang akan
disimpan di website.
Dan non-persistent akan JavaScript yang benar-benar hanya akan terjadi sekali.
Jadi mari kita lihat contoh cepat.
>> OK.
Jadi website ini, sederhana, tidak ada yang terjadi di sini.
Dan kita akan mencoba untuk memasukkan beberapa JavaScript.
Jadi cara kita mulai menulis JavaScript adalah kita mulai dengan script awal.
Dan kami menutupnya dengan script.
Kita hanya akan menempatkan pesan -
Aku akan menunjukkan kepada Anda -
waspada.
Alert adalah fungsi JavaScript yang digunakan untuk menampilkan sesuatu.
Jadi mari kita coba cepat.
Aku akan pergi, halo waspada.
Yah, aku lupa untuk menempatkan -
OK.
Jadi itu sederhana.
>> Kami menempatkan JavaScript pada sebuah situs web, dan itu muncul.
Dan itu semacam hanya terjadi di website kami, kan?
Jadi sepertinya itu tidak masalah, kan?
Maksudku, bagaimana Anda bisa menggunakan ini jahat?
Jadi cara yang hacker lakukan ini benar-benar sederhana.
Mereka akan meraihnya.
Mereka dapat mengirim link ini kepada Anda.
Jika saya akan mengirim link ini kepada Anda sekarang, dan Anda membukanya, itu akan
mengatakan, halo, mengatakan bahwa website saya kepada Anda halo.
>> Dan jika saya mengatakan sesuatu yang sedikit lebih pintar, jika saya menarik sebuah
Fungsi JavaScript Aku agak dari sudah menulis -
tetapi jika Anda melihat itu, aku akan pergi over sebelum saya menulis itu.
Jadi kita akan mengatur timeout.
Kita akan menunggu beberapa detik.
Bahkan, kita akan menunggu, jika Saya tidak salah, lima detik.
Ini berlaku dalam milidetik.
Lalu apa yang akan kita lakukan adalah kita akan mengingatkan bahwa login
kehabisan waktu untuk masuk kembali masuk
Dan kita akan mengubah lokasi ke lokasi yang berbeda.
>> Jadi jika saya mengirim website ini kepada seseorang, mereka akan menjadi
browsing sekitar, tenang.
Tidak ada yang terjadi.
Dan dalam lima detik, itu akan mengatakan, login timed out.
Silakan masuk kembali masuk
Setelah mereka mengklik OK, aku akan membawa mereka ke situs web lain.
Agaknya, website akan mirip dengan website yang
mereka berada di sebelumnya.
Dan mereka akan log mereka kredensial ke website saya bukan
situs web mereka.
>> Dan jadi saya bisa mengirim orang yang email dengan link ini.
Aku berkata, oh, inilah link.
Ini adalah sebuah bank, misalnya.
Saya katakan, di sini, pergi pada link ini.
Dan setelah mereka kirimkan, mereka akan browsing sekitar.
Aku bisa menunggu selama 15 detik, 20 detik, dan kemudian pop itu silahkan login kembali
menandatangani kembali.
Kalian dapat mencobanya dengan lebih banyak hal.
Ini rumit karena kalian belum melihat JavaScript, sehingga Anda mungkin
tidak tahu beberapa fungsi.
Tapi semua harus Anda lakukan adalah mulai dengan script, berakhir dengan script.
Dan Anda bisa memasukkan apa pun di tengah.
>> Alert adalah fungsi, menunggu.
Lokasi Jendela membawa Anda ke lokasi baru.
Tapi Anda dapat melakukan jauh lebih banyak.
Dan idenya adalah bahwa kami mengambil off.
Jika saya pergi ke dua contoh, dan saya dimasukkan ke dalam kode yang sama ini, itu
tidak akan bekerja.
Jadi itu mencetak semuanya keluar karena apa website ini awalnya
dilakukan adalah jika saya menempatkan apa pun di sini, itu akan mencetaknya di sini.
Jadi itu tidak mencetak apa-apa.
Contoh ini benar-benar memeriksa untuk melihat apakah ada script.
Jadi ya, silakan.
Tanya saya.
>> AUDIENCE: Apakah tidak mengirim get atau mengirim permintaan?
>> LUCIANO ARANGO: Ya. mereka mengirimkan permintaan get.
>> AUDIENCE: Ini adalah?
>> LUCIANO ARANGO: Ya.
Juga menggunakan browser permintaan pos.
Tapi aku mencoba untuk menunjukkan permintaan get sehingga kita bisa melihat apa yang
sebenarnya terjadi.
Dan jika kita melihat kode ini - sehingga tidak bekerja lagi.
Dan jika kita melihat pada kode ini, itu akan berada di dua contoh.
Apa orang ini yang dilakukan, orang tersebut yang bertanggung jawab atas browser ini -
membuka, OK -
menggantikan script kata.
Ini adalah PHP, yang kalian mungkin telah melihat sedikit belum.
>> Dia hanya mengganti naskah kata dengan nama.
Jadi Namun, jika saya pergi ke depan dan hanya dimasukkan ke dalam -
jika saya ambil kode saya lagi, dan aku akan untuk memodifikasi hanya sedikit.
Alih-alih script, aku akan berubah untuk naskah dengan modal R. Dan
kita akan melihat apakah kode ini bekerja.
Jadi tidak mencetaknya, yang merupakan pertanda baik.
Dan mudah-mudahan dalam dua detik lagi, itu akan muncul.
>> Login Anda habis.
OK.
Tidak apa-apa.
Jadi memeriksa naskah mungkin belum tentu bekerja.
Orang -
itu juga dapat memeriksa naskah huruf besar, Script huruf kecil, kasus str
membandingkan, pastikan mereka sama.
Tapi hacker masih dapat melakukan semacam apa kita lakukan di Vigenere ketika kita pindah
kembali beberapa karakter, bergerak maju.
Dan bisa mencari cara untuk meletakkan script kembali di sana sehingga dapat menyuntikkan
bahwa script.
>> Jadi apa yang ingin Anda gunakan adalah htmlspecialchars untuk
melindungi situs Anda.
Dan apa yang dilakukan adalah membuat yakin bahwa apa yang Anda masukkan ke dalam -
misalnya, kutipan atau ini lebih besar dari atau kurang dari -
diganti dengan sesuatu yang tidak akan -
biarkan aku memperbesar sini -
ampersand sebenarnya.
Ini akan menggantikan mereka khusus HTML karakter yang akan kita lihat ketika kita
bicarakan -
oh, ini akan membawa saya kembali ke -
karakter ini di sini.
>> Menandakan bahwa ini sesuatu akan datang.
Untuk HTML, yang braket mulai memberitahu kita bahwa sesuatu
HTML terkait akan datang.
Dan kami ingin menyingkirkan itu.
Kami tidak ingin menempatkan HTML ke dalam website.k Kami tidak ingin pengguna untuk menjadi
mampu menempatkan sesuatu di situs web mereka yang dapat mempengaruhi website mereka, seperti
Script atau HTML atau sesuatu seperti itu.
Yang penting adalah bahwa Anda membersihkan input pengguna.
>> Jadi pengguna dapat masukan banyak hal.
Dia dapat memasukkan banyak hal untuk mencoba untuk mengelabui browser Anda ke dalam masih
menjalankan kode script ini.
Apa yang ingin Anda lakukan adalah tidak hanya melihat untuk naskah, tetapi mencari segala sesuatu
yang bisa berbahaya.
Dan htmlspecialchars akan melakukannya untuk Anda, sehingga Anda tidak perlu
khawatir tentang hal itu.
Tapi jangan mencoba untuk melakukan sendiri semacam dengan kode Anda sendiri.
Apakah setiap orang yang jelas tentang XSS?
>> OK.
Mari kita pergi ke injeksi SQL.
Jadi injeksi SQL mungkin adalah nomor satu kerentanan
dalam website yang berbeda.
Maksudku, contoh yang baik -
Aku hanya meneliti terjauh untuk hal ini.
Dan saya menemukan artikel ini mengagumkan, di mana Saya melihat bahwa Harvard dilanggar,
hacked.
Dan aku bertanya-tanya, baik, bagaimana mereka akan melakukannya?
Harvard yang paling mengagumkan, sebagian besar mengamankan universitas pernah.
Benar?
Nah, untuk pelanggaran server, hacker menggunakan
teknik yang disebut SQL injection.
>> Jadi ini terjadi pada hari ke hari.
Orang lupa untuk memperhitungkan untuk injeksi SQL.
Harvard tidak.
Saya pikir itu mengatakan di sini, Princeton, Stanford, Cornell.
Jadi bagaimana kita - jadi apa SQL ini injection yang membawa semua ini
orang bawah?
OK.
Jadi SQL adalah bahasa pemrograman yang kita gunakan untuk mengakses database.
Apa yang kita lakukan adalah kita pilih -
jadi apa ini berbunyi sekarang adalah pilih segala sesuatu dari meja.
>> SQL, itu berubah menjadi database ini yang memiliki tabel penuh dengan informasi.
Jadi memilih semuanya dari pengguna dimana nama adalah nama pengguna.
Benar?
Cukup sederhana.
Ide SQL injection adalah bahwa kita menyisipkan beberapa kode berbahaya yang akan
mengelabui server ke dalam menjalankan sesuatu berbeda dari apa yang
awalnya berjalan.
Jadi katakanlah username, kita masukkan ke dalam atau 1 sama dengan 1.
Jadi kita masukkan ke dalam atau 1 sama dengan 1.
Cara itu akan membaca sekarang akan pilih dari pengguna, mulai dari
pengguna - ini adalah segalanya -
mana nama adalah nama pengguna, tapi username adalah 1 atau sama dengan 1.
>> Jadi namanya apa-apa atau 1 sama dengan 1.
1 sama dengan 1 adalah selalu benar.
Jadi ini akan selalu kembali informasi dari pengguna.
OK.
Kita tidak perlu memiliki username.
Kami hanya dapat memiliki apa pun yang kita inginkan, dan akan kembali informasi
yang kita butuhkan.
Mari kita lihat contoh lain.
>> Jika kita telah memilih semuanya dari pengguna, mana nama adalah pengguna TABLE DROP -
jadi apa yang Anda pikir hal ini akan lakukan jika saya dimasukkan ke dalam username
sebagai pengguna DROP TABLE?
Ada yang punya ide?
Ya.
>> AUDIENCE: Ini akan memberitahu untuk membuang semua tabel.
>> LUCIANO ARANGO: Ini akan memberitahu kami untuk membuang segala sesuatu di website,
segala sesuatu dalam database.
Dan apa yang orang menggunakan ini untuk - jadi Aku akan menunjukkan kepada kalian.
Saya dinonaktifkan menjatuhkan tabel karena saya tidak ingin Anda
orang untuk menjatuhkan meja saya.
Mari kita lihat ini.
Jadi ini hanya menarik sampai informasi untuk orang tertentu.
Jadi bagaimana kita tahu apakah ini adalah dipengaruhi oleh injeksi SQL.
Kita akan memeriksa nyata cepat jika kita dapat menempatkan sesuatu -
biarkan aku salin kode ini.
Aku akan pergi ke dalam satu detik.
Aku akan menempatkan akar dan 1 sama dengan 1.
>> Ini di sini, ini tanda persen 23 -
apa itu benar-benar adalah, jika saya lihat di sini di -
cara HTML mengambil dalam jumlah, jika Anda lihatlah ketika saya dimasukkan ke dalam ruang
di sini - jika saya ruang sesuatu di sini, perubahan itu ke persen 2.
Apakah kalian melihat ini di sini ketika saya dimasukkan ke dalam ruang?
Cara kerjanya adalah bahwa Anda hanya dapat mengirim nilai ASCII melalui HTML.
Jadi itu menggantikan, misalnya, ruang dengan 20 persen.
Aku tidak tahu apakah kalian telah melihat itu sebelumnya.
>> Ini menggantikan hashtag dengan 23 persen.
Kita perlu hashtag di akhir atau Pernyataan sehingga kita dapat memberitahu
database untuk lupa untuk komentar titik koma terakhir ini di akhir.
Kami ingin tidak berpikir tentang hal itu.
Kami hanya ingin menjalankan semuanya yang kita miliki sebelumnya dan
komentar yang keluar.
Mari kita lihat itu.
>> Jadi jika saya harus menempatkan sesuatu yang salah - katakanlah misalnya, saya menempatkan 2 equals
1, tidak memberikan apa-apa.
Ketika saya dimasukkan ke dalam 1 sama dengan 1, dan tidak kembali sesuatu, ini memberitahu saya bahwa
ini rentan terhadap suntikan SQL.
Aku tahu sekarang bahwa apa pun Aku meletakkan setelah ini -
dan misalnya, DROP TABEL atau sesuatu seperti itu
pasti akan bekerja.
Aku tahu itu rentan terhadap SQL injection karena saya tahu bahwa
di bawah tenda, itu membiarkan saya melakukan 1 sama dengan 1 hal.
OK?
>> Dan jika kita melihat-anak lainnya, nomor dua dan nomor tiga, itu
akan melakukan sedikit lebih memeriksa di bawah
kap apa itu.
Jadi siapa pun memungkinkan drop apa pun atau mencoba?
Apakah kalian mendapatkan semacam SQL belum?
Karena aku tahu kalian belum melihatnya lagi, jadi semacam
membingungkan bagi kalian.
Mari kita lihat.
Jadi apa cara untuk mencegah SQLI?
OK.
Jadi ini benar-benar penting karena Anda Orang-orang pasti ingin mencegah
ini di website Anda.
>> Jika tidak, semua teman-teman Anda akan mengolok-olok Anda ketika mereka drop semua
tabel Anda.
Jadi idenya adalah bahwa Anda memperbaiki SQL dengan cara tertentu, sedangkan Anda cocok
apa input pengguna dengan string tertentu.
Jadi cara ini bekerja adalah Anda mempersiapkan database.
Anda memilih nama, warna, dan kalori dari database yang disebut buah.
Dan kemudian di mana kalori kurang dari, dan kami menaruh tanda tanya di sana
mengatakan kita akan masukan sesuatu dalam hitungan detik.
>> Dan warna sama, dan kami mengajukan pertanyaan mark mengatakan kita akan
masukan sesuatu dalam satu detik juga.
OK?
Dan kemudian kita jalankan, menempatkan di 150 dan merah.
Dan ini akan memeriksa untuk memastikan yakin bahwa kedua -
array ini akan memeriksa bahwa ini Kedua adalah integer dan
bahwa ini adalah sebuah string.
Kemudian kami pergi, dan kami mengambil semua, kami memasukkannya ke dalam merah.
Itu berarti kita mengambil semua.
Ini berarti kita benar-benar mengeksekusi SQL Pernyataan dan mengembalikannya ke warna merah.
Di sini kita melakukan hal yang sama, tapi kami melakukan hal yang sama untuk kuning.
Dan kita mengambil semua.
>> Dan dengan cara ini, kita mencegah pengguna dari mampu masukan sesuatu
bukan itu yang kita ditentukan, string atau integer, misalnya.
Aku sedang berbicara sebelumnya tentang bergantung pada orang lain.
Ketika kalian memulai proyek Anda, Anda paling pasti akan menggunakan
bootstrap atau sesuatu yang serupa.
Apakah kalian pernah menggunakan Wordpress?
Mungkin kalian telah menggunakan Wordpress paling mungkin.
Jadi masalah dengan menggunakan hal-hal orang lain -
Aku hanya pergi ke Google cepat nyata Kerentanan Wordpress.
>> Jika saya melakukan ini sampai sekarang -
Aku benar-benar melakukan dua detik Google.
Kita bisa melihat bahwa Wordpress -
ini tanggal sebagai September '12.
26 diperbarui.
Konfigurasi default dari Wordpress sebelum 3.6 tidak mencegah ini
upload tertentu, kekuatan yang memudahkan
cross-site scripting serangan.
Jadi cerita singkat, setelah kami bekerja dengan - jadi aku, di musim panas, bekerja sebuah
magang.
Dan kami bekerja dengan semacam seperti perusahaan kartu kredit besar.
>> Dan mereka bergantung pada sesuatu yang disebut -
Aku tidak tahu apakah kalian pernah bermain dengan produk yang disebut Joomla.
Joomla adalah produk yang digunakan untuk control - semacam mirip dengan
Wordpress, digunakan untuk membangun website.
Jadi mereka memiliki situs web mereka bekerja pada Joomla.
Ini sebenarnya kartu kredit perusahaan di Kolombia.
Aku akan membawa Anda ke mereka situs cepat.
>> Jadi mereka menggunakan Joomla.
Dan mereka tidak diperbarui Joomla penambahan terbaru.
Dan ketika kami mengambil melihat kode mereka, kami mampu untuk benar-benar
masuk ke dalam kode mereka dan mencuri semua informasi kartu kredit yang mereka miliki,
semua nomor kartu kredit, nama, alamat.
Dan ini hanya -
dan kode mereka baik-baik saja.
Mereka memiliki kode besar.
Itu semua keamanan.
Mereka memeriksa semua database.
Mereka memastikan cross-site scripting baik-baik saja.
>> Tapi mereka menggunakan sesuatu yang tidak diperbarui, itu tidak aman.
Dan sehingga membawa mereka ke - sehingga kalian pasti akan menggunakan lain
kode, kerangka orang lain orang untuk membangun website Anda.
Pastikan bahwa mereka aman karena kadang-kadang itu bukan Anda, salah satu yang
membuat kesalahan.
Tapi orang lain membuat kesalahan, dan maka Anda jatuh karena itu.
>> Sandi dan PII.
Jadi password.
OK.
Mari kita lihat password cepat.
OK.
Tolong beritahu saya bahwa setiap orang menggunakan aman -
Aku berharap semua orang di sini menggunakan password yang aman.
Aku hanya membiarkan bahwa sebagai asumsi.
Jadi kalian pasti akan menyimpan password untuk situs web Anda.
Anda akan membuat sesuatu seperti login atau sesuatu seperti itu.
Yang penting adalah untuk tidak menyimpan password dalam teks biasa.
Hal ini sangat penting.
Anda tidak ingin menyimpan password dalam teks biasa.
>> Dan Anda pasti tidak benar-benar ingin untuk menyimpannya dalam satu cara hash.
Jadi apa yang salah satu cara hash adalah bahwa ketika Anda menghasilkan kata, ketika Anda menaruh ini
kata menjadi fungsi hash, maka akan menghasilkan kembali semacam samar
pesan atau set samar kunci.
Saya akan menunjukkan sebuah contoh.
Aku akan hash password1 kata yang mereka.
Hash Jadi md5 akan kembali saya semacam informasi aneh.
>> Masalahnya adalah bahwa orang di luar sana yang ingin masuk ke website memiliki
sudah tahu sort semua hash md5.
Apa yang mereka lakukan adalah mereka duduk di mereka komputer, dan mereka hash setiap
mungkin kata tunggal di luar sana sampai mereka punya semacam apa ini.
Jika saya melihat ini -
Aku hanya meraih hash ini.
Jika saya mendapatkan hash ini dari -
jika aku pergi ke sebuah situs web, dan saya menemukan hash ini karena saya bisa sampai ke
database, dan aku melihat ke atas, seseorang sudah figured it out bagi saya.
>> Ya.
Jadi orang-orang duduk, dan md5 apapun hash yang Anda masukkan ke dalam, mereka akan
kembali kepada Anda sesuatu itu sebuah kata.
Jika saya hash kata lain, seperti -
Saya tidak tahu -
trees2.
Saya tidak ingin menjadi kecewa oleh pencarian Google saya.
Itu dia, trees2.
Jadi banyak situs masih menggunakan md5 hash.
Mereka mengatakan, oh, itu aman.
Kami tidak menyimpan dalam teks biasa.
Kami memiliki hash md5 ini.
Dan semua harus saya lakukan adalah hanya Google nomor tersebut.
>> Aku bahkan tidak harus menghitung sendiri.
Aku hanya bisa Google itu, dan seseorang sudah melakukannya untuk saya.
Berikut adalah banyak dari mereka.
Berikut sekelompok password.
Jadi pasti tidak menggunakan md5 hash, karena semua Anda harus
lakukan adalah Google itu.
Jadi apa yang Anda ingin gunakan saja?
OK.
Sesuatu yang disebut penggaraman.
Jadi apa pengasinan adalah -
kalian ingat ketika kami berbicara tentang acak di -
Saya tidak yakin apa yang pset itu -
apakah itu pset sana atau empat?
>> Kami berbicara tentang menemukan jarum di tumpukan jerami.
Dan dalam pset, itu mengatakan bahwa Anda bisa benar-benar mencari tahu apa random
menghasilkan karena seseorang sudah berlari acak satu juta kali dan hanya
semacam membentuk apa yang mereka hasilkan.
Apa yang ingin Anda lakukan adalah dimasukkan ke dalam input.
Jadi itulah yang pengasinan semacam ini.
Mereka sudah tahu apa yang penggaraman kembali untuk setiap pekerjaan.
>> Jadi apa yang dilakukan adalah penggaraman Anda masukkan ke dalam garam.
Anda dimasukkan ke dalam kata tertentu.
Dan itu akan hash kata itu tergantung pada apa yang Anda masukkan ke dalam sini.
Jadi jika saya hash password satu dengan ini kalimat, itu akan hash
berbeda jika saya hash password1 dengan kalimat yang berbeda.
Ini semacam memberikan tempat untuk mulai untuk hashing untuk memulai.
Jadi jauh lebih sulit untuk menghitung, tetapi Anda masih bisa menghitung, terutama
jika Anda menggunakan garam yang buruk.
>> Orang-orang sudah tahu juga garam umum dan tahu
apa itu.
Garam acak jauh lebih baik, tapi cara terbaik adalah dengan menggunakan
sesuatu yang disebut crypt.
Dan apa crypt memungkinkan Anda untuk lakukan - sehingga fungsi-fungsi ini
sudah dibangun untuk Anda.
Banyak orang lupa bahwa, atau mereka lupa untuk menggunakannya.
Tapi kalau aku mencari PHP crypt, crypt sudah mengembalikan string hash untuk saya.
Dan itu benar-benar garam itu berkali-kali dan hash berkali-kali.
>> Jadi kita tidak perlu melakukan hal ini.
Jadi yang harus Anda lakukan adalah mengirimkannya ke crypt.
Dan itu akan membuat hash besar tanpa Anda harus khawatir tentang garam
atau apa pun.
Karena jika Anda adalah untuk garam, Anda harus untuk mengingat apa yang Anda gunakan garam
karena jika tidak, Anda tidak bisa mendapatkan Anda Sandi kembali tanpa
garam yang Anda gunakan.
OK.
>> Dan juga identitas pribadi informasi.
Keamanan sehingga sosial, kartu kredit - itu cukup jelas.
Tapi kadang-kadang orang lupa cara itu perbuatan adalah, seberapa banyak informasi yang Anda
benar-benar perlu menemukan beberapa satu orang?
Seseorang melakukan penelitian tentang ini jalan kembali.
Dan itu seperti, jika Anda memiliki nama lengkap, Anda tidak dapat menemukan
seseorang yang mudah.
Tetapi bagaimana jika Anda memiliki nama lengkap dan tanggal kelahiran mereka?
Apakah itu cukup untuk mengidentifikasi seseorang secara khusus?
>> Bagaimana jika Anda memiliki nama mereka dan alamat jalan bahwa mereka hidup?
Apakah itu cukup untuk menemukan seseorang?
Dan saat itulah mereka mempertanyakan, apa yang informasi identitas pribadi, dan
apa yang harus Anda khawatir tentang tidak memberikan?
Jika Anda memberikan identitas pribadi informasi yang seseorang memberi Anda,
Anda berpotensi bisa dituntut.
Dan kita pasti tidak menginginkan hal itu.
>> Jadi, ketika Anda menempatkan website Anda keluar, dan Anda telah benar-benar keren
desain, mudah-mudahan Anda membuat proyek akhir yang mengagumkan.
Setiap Anda semacam ingin meletakkannya di luar sana.
Anda ingin memastikan bahwa apa pun Anda mengambil dari pengguna, jika itu
informasi identitas pribadi, Anda ingin memastikan Anda sedang benar-benar
hati-hati dengan itu.
>> Injeksi Shell.
OK.
Injeksi Shell memungkinkan penyusup untuk mendapatkan akses ke baris perintah Anda yang sebenarnya
di server Anda.
Dan dia mampu menjalankan kode bahwa Anda tidak dapat mengontrol.
Mari kita mengambil contoh dari hal ini string yang indah di sini.
Jika kita masuk ke website lagi, aku akan masuk ke kode injeksi.
Jadi apa yang dilakukan adalah -
itu juga apa yang kami melihat sebelumnya.
Kami membiarkan pengguna dimasukkan ke dalam apa pun yang dia inginkan, dan itu akan mencetak
apa pun yang Anda inginkan.
>> Jadi aku akan menempatkan panggilan.
Apa yang dilakukan adalah -
itu akan mulai dengan menggabungkan.
Sehingga akan membiarkan saya menjalankan apapun perintah berjalan seseorang
sebelum dan perintah saya.
Dan aku menjalankan perintah sistem.
Dan ini string terakhir adalah - ingat apa yang saya berbicara dengan kalian tentang,
sedangkan Anda harus menyandikan dalam metode URL.
Jika saya menjalankan ini sekarang -
Aku akan menunjukkan kepada Anda di sini -
Anda akan melihat bahwa saya akhirnya up menjalankan perintah.
>> Ini sebenarnya adalah server yang sebenarnya bahwa website saya berjalan di.
Jadi kita tidak menginginkan hal itu, karena saya dapat menjalankan -
server ini bukan milikku.
Jadi saya tidak ingin mengacaukan nya adik, Server Marcus.
Tapi Anda bisa menjalankan perintah lebih yang berbahaya.
Dan berpotensi, Anda bisa menghapus file, menghapus direktori.
Saya dapat menghapus direktori tertentu jika Aku ingin, tapi aku tidak ingin
melakukan itu untuk Marcus.
Dia pria yang baik.
Dia biarkan aku meminjam server-nya.
Jadi aku akan membiarkan dia dari pada yang baik.
>> Jadi apa yang kita tidak ingin menggunakan - kita tidak ingin menggunakan eval atau sistem.
Eval atau sistem memungkinkan kita untuk membuat panggilan sistem tersebut.
Berarti eval mengevaluasi.
Sistem berarti apa yang saya berlari.
Ini menjalankan sesuatu dalam sistem.
Tapi kita bisa melarang hal-hal ini di PHP sehingga kita tidak menggunakannya.
Dan file upload.
Saya akan melakukan yang mengagumkan hal dengan file upload.
Tapi seperti saya katakan guys, file saya Hal upload tidak bekerja.
Jika saya harus meng-upload file sekarang -
jika saya harus meng-upload file, dan itu gambar -
Anda memiliki hal meng-upload itu gambar.
Itu baik-baik saja.
Tidak ada yang terjadi.
>> Tapi jika Anda memiliki file upload, untuk contoh, dan pengguna benar-benar upload
file PHP atau file exe atau sesuatu seperti itu, maka Anda bisa berpotensi
memiliki masalah.
Ini bekerja sebelumnya.
Sayangnya bagi saya, itu tidak bekerja lagi.
Jika saya, misalnya, meng-upload file ini, aku tidak mendapatkan izin untuk meng-upload
file karena server tidak menjadi milikku.
Jadi orang itu benar-benar cerdas.
>> Jadi kita tidak mau -
Aku akan menunjukkan kalian -
OK, ini adalah beberapa alat yang benar-benar keren.
Jadi ini -
masuk ke - jika kalian memiliki Firefox - mudah-mudahan Anda lakukan.
Ada dua add-ons yang disebut SQL Inject Me and Cross-Site Script Me.
Mereka membuka sedikit sisi bar di samping.
Dan jika saya harus pergi ke CS60 misalnya -
jadi apa yang dilakukannya itu terlihat untuk semua bentuk yang -
mudah-mudahan, saya tidak akan mendapatkan dalam kesulitan untuk ini.
>> Tapi OK.
Berikut sistem pin.
Jadi ketika saya mulai mencari lubang di sistem, hal pertama yang saya lakukan adalah
membuka kecil yang indah ini alat di samping.
Dan aku akan menguji bentuk dengan serangan auto.
Jadi apa yang dilakukan itu akan perlahan-lahan membuka banyak browser.
Berikut sekelompok browser.
Dan itu mencoba setiap kombinasi tunggal cross-site scripting
bahwa ada kemungkinan yaitu, jika Anda lihat di samping.
>> Dan itu akan memberi saya hasil semacam apa jawabannya.
Semua lulus.
Jelas, mereka semua lulus.
Maksudku, mereka benar-benar pintar orang di sana.
Tapi jika saya harus menjalankan -
Aku sudah kali sebelum ketika saya menjalankan ini pada proyek-proyek akhir siswa.
Saya cukup menjalankan SQL Inject Me dengan semua serangan yang berbeda.
Dan itu mencoba untuk SQL inject pin server ini.
Jadi jika kita gulir ke bawah, untuk Misalnya, ia mengatakan -
ini baik jika ia mengembalikan.
>> Jadi diuji beberapa nilai tertentu.
Dan server kembali sebuah kode yang negatif.
Hapus sementara.
Ini bagus.
Akan mencoba semua tes ini.
Jadi Anda hanya bisa menjalankan -
Aku berharap aku bisa menemukan sebuah website yang nyata cepat yang akan membiarkan saya -
mungkin toko CS50.
>> Wow, ini akan mengambil terlalu lama.
Aku akan membiarkan tes pertama tidak selesai tepat.
Jadi itu mengeluh.
Jadi ini adalah tiga hal.
Alat ini gratis.
Anda dapat men-download dan menjalankan mereka di situs web Anda, dan akan memberitahu Anda jika
Anda memiliki cross-site scripting, jika Anda memiliki SQL, jika Anda memiliki
sesuatu dari sejenisnya.
Aku agak mengacaukan.
>> Apa yang penting -
OK, jadi tidak pernah percaya pengguna.
Apapun masukan user Anda, membuat Pastikan Anda membersihkan, Anda membersihkannya,
Anda memeriksa hal yang benar, bahwa itu memberi Anda apa yang Anda
ingin dia memberi Anda.
Selalu diperbarui pada apa kerangka bahwa Anda benar-benar menggunakan.
Jika Anda menggunakan sesuatu seperti bootstrap -
Aku tahu kalian akan menggunakan bootstrap karena dia akan pergi
atas hal ini segera di kelas -
dan Wordpress atau sesuatu seperti itu, biasanya ini bisa hacked.
>> Dan kemudian Anda bahkan tidak tahu.
Kau hanya menjalankan website Anda.
Dan itu benar-benar aman.
Dan Anda turun.
Jadi aku memancing benar-benar awal.
Tapi aku ingin berterima kasih pentest Labs.
Aku akan menunjukkan kalian sesuatu disebut pentest Labs.
Jika kalian benar-benar tertarik apa keamanan sebenarnya, ada
situs web disebut pentest Labs jika kalian pergi ke sana sekarang.
Oh, well, bukan itu.
Aku hanya akan menjalankan seperti ini.
Google memberitahu saya jawabannya.
>> OK.
Dan itu mengajarkan Anda gunakan - sehingga mengatakan, belajar penetrasi web
pengujian dengan cara yang benar.
Ini mengajarkan Anda -
mudah-mudahan, Anda orang yang etis.
Tapi itu mengajarkan Anda bagaimana Anda dapat melihat bagaimana Anda bisa masuk ke dalam website.
Dan jika Anda belajar bagaimana Anda dapat masuk ke dalam website, Anda dapat belajar bagaimana
melindungi diri dari mendapatkan dalam website.
Biarkan aku memperbesar karena mungkin kalian tidak melihat hak ini.
>> Dari injeksi SQL untuk shell, sehingga semacam bagaimana saya bisa dapatkan dari SQL
injeksi untuk membayar.
Dan Anda men-download mesin virtual ini.
Dan mesin virtual yang sudah datang dengan website yang Anda
akan mencobanya.
Anda men-download PDF ini.
Dan ia akan menampilkan baris demi baris apa yang harus Anda lakukan, apa yang Anda memeriksa.
Ini adalah apa yang sebenarnya penyerang tidak masuk ke dalam sebuah situs web.
>> Dan beberapa dari hal ini adalah rumit.
Aku berharap aku bisa pergi lebih lebih hal dengan kalian.
Tapi aku khawatir bahwa kalian belum benar-benar -
ini adalah apa yang saya pergi dengan kalian, tes web
untuk pengujian penetrasi.
Tidak benar-benar tahu apa yang SQL dan apa -
Seminar carl Jackson mengagumkan juga.
Kalian tidak tahu semacam apa ini.
Tetapi jika Anda pergi ke website ini, dan Anda mendownload tutorial ini dan ini
PDF, Anda dapat melihat pada semacam apa bidang keamanan benar-benar
dalam pengujian penetrasi, melihat bagaimana Anda bisa masuk ke dalam situs dan melindungi
diri dari itu.
>> Jadi jika saya membuat gambaran super cepat, itu akan mencegah cross-site scripting.
Anda ingin menggunakan htmlspecialchars setiap mengatur waktu input pengguna sesuatu.
Mencegah SQL injection.
Jika Anda melakukannya, Anda sudah lebih baik dari Harvard adalah
ketika mereka mendapat dilanggar.
Dan pastikan password Anda tidak dalam teks biasa.
Pastikan Anda tidak hanya salah satu cara hash mereka tetapi bahwa Anda menggunakan crypt, PHP
fungsi yang saya menunjukkan kalian.
Dengan cara itu, Anda harus baik.
>> Juga, jika teman Anda membiarkan Anda, jalankan SQL Inject Me di situs Web mereka.
Jalankan cross-site scripting di situs Web mereka.
Dan Anda akan melihat banyak situs ini memiliki satu ton kerentanan.
Ini luar biasa berapa banyak orang lupa untuk membersihkan database mereka atau untuk membuat
yakin apa yang memasukkan orang tersebut bukan kode script.
OK.
Aku semacam berakhir benar-benar awal.
Tetapi jika seseorang memiliki pertanyaan tentang apa-apa, Anda bisa menembak saya sebuah pertanyaan.
Ya.
Pergi, pergi.
>> AUDIENCE: Saya hanya ingin bertanya, Anda dapat menjelaskan bagaimana file
meng-upload persis bekerja.
>> LUCIANO ARANGO: Ya.
Jadi biarkan saya menunjukkan file meng-upload cepat.
Jadi file upload -
masalah wit file upload sekarang adalah bahwa -
Aku akan membuka kode sehingga kalian melihat kode di belakang layar.
Dan itu adalah meng-upload.
Berikut adalah kode untuk file uploader.
>> Kami sedang berusaha untuk masuk ke ini direktori di sini.
Dan kami berusaha untuk, sekali kita input , file isset - sehingga ketika ada
file dalam FILES, gambar itu, maka kami mencoba untuk memindahkannya ke sini.
Kami ambil file di sini.
Metode ini POST, jenis, gambar, berkas.
Dan kami akan mengirimkan file ini.
Dan kemudian setelah kami mendapatkannya, sehingga setelah file memiliki gambar, kami mencoba untuk mengirimkannya
ke direktori ini.
>> Masalahnya adalah bahwa website ini tidak membiarkan saya pergi ke direktori ini,
karena tidak ingin aku kembali.
Ia tidak ingin aku pergi -
Aku harus pergi - jadi inilah meng-upload.
Berikut gambar.
Aku harus pergi sepanjang perjalanan kembali ke awal dan meletakkannya di sana dan kemudian
pergi dan memasukkannya ke dalam direktori.
Jadi jika saya menjalankan jendela terminal, dan saya ingin memindahkan file -
[Tak terdengar]
bisa melihatnya.
Jika saya ingin memindahkan file, saya memiliki untuk menempatkan nama file dan kemudian
path lengkap saya ingin mengirim ke.
>> Dan kemudian server tidak membiarkan saya kembali.
Dan sehingga tidak membiarkan saya mendapatkan file tersebut.
Tapi biasanya -
jadi ada kode untuk upload file.
Jadi biasanya apa yang akan terjadi adalah bahwa Orang tidak memeriksa apakah file saya
berakhir dengan jpeg., jadi saya akan ingin memeriksa.
Mari saya membuka contoh terlalu cepat.
>> OK.
Orang ini benar -
sehingga contoh dua adalah memeriksa jika preg_match -
di sini adalah di sini -
memastikan bahwa berakhir dengan PHP, yang baik.
Ini bagus.
Tapi ada yang sangat besar masalah dengan hal ini.
Ini bagus.
Tapi jika saya harus menempatkan file bernama myfavoritepicture.php.jpeg, aku bisa
masih berpotensi menyingkirkan jpeg dan menjalankan it.k Itu PHP berbahaya.
Anda tidak ingin orang untuk dapat untuk menjalankan kode pada website Anda.
>> Tapi kemudian jpeg. Memungkinkan itu berlalu.
Idenya adalah apa yang Anda ingin lakukan tidak mengambil file, A. Tapi, OK, apa
Anda benar-benar ingin lakukan adalah memastikan bahwa Anda baca di seluruh dunia.
Dan tidak ada. Php di dalamnya.
Tidak ada php dalam. nama seluruh file.
>> AUDIENCE: Tapi Anda bisa menempatkan. jpeg di ujungnya.
Server masih menjalankan kode.
>> LUCIANO ARANGO: Tidak, itu tidak akan berjalan di awal.
Anda harus kembali dan mencoba untuk melihat apakah Anda bisa -
>> AUDIENCE: Jadi kita harus -
OK, hanya satu set yang melibatkan -
>> LUCIANO ARANGO: Ya.
>> AUDIENCE: OK.
>> LUCIANO ARANGO: Ya.
OK.
Ada pertanyaan lain?
OK.
Aku akan meninggalkan ini dan mengurutkan dari mencoba untuk melihat apakah kalian bisa -
yang lain adalah sedikit lebih rumit karena mereka memerlukan banyak
pengetahuan lebih tentang SQL dari sekedar pengetahuan awal web SQL dan
apa JavaScript.
Tapi aku akan mencoba untuk menjaga hal ini, dan mudah-mudahan kalian akan belajar
tentang hal ini dan mencoba untuk mengambil mengintip di apa yang dapat Anda lakukan dan berapa banyak contoh
Anda bisa mendapatkan melalui.
>> Ada yang punya lain pertanyaan tentang hal itu?
Silakan.
Ya, menembak, menembak.
Ya, silakan.
Silakan.
>> AUDIENCE: OK.
Jadi saya mendengar tentang bagaimana Quotes Sihir tidak cukup aman.
>> LUCIANO ARANGO: Apa -
Magic Quotes?
>> AUDIENCE: Ya.
Jadi itu menambah - sehingga setiap kali Anda masukan sesuatu, selalu menambahkan tanda kutip.
>> LUCIANO ARANGO: Ya.
Ya.
OK.
>> AUDIENCE: Dan kemudian aku meskipun yang bekerja, tapi kemudian saya mencari itu.
Dan katanya itu tidak baik.
Tapi aku tidak yakin mengapa.
>> LUCIANO ARANGO: Ya.
>> AUDIENCE: Jangan gunakan Magic Quotes, karena itu tidak aman.
>> LUCIANO ARANGO: OK.
Jadi Magic Quotes adalah ketika Anda memasukkan SQL dan sudah menambahkan kutipan untuk Anda.
>> AUDIENCE: Selalu menambahkan kutipan sekitar apa pun yang Anda menempatkan masuk
>> LUCIANO ARANGO: Ya.
Jadi masalah dengan itu adalah bahwa -
Aku akan melihat di -
>> AUDIENCE: Bagaimana cara mendapatkan pernyataan SQL?
Atau aku kira itu bisa seperti kutipan pilih.
>> LUCIANO ARANGO: Ya, Anda perlu kutipan yang baik untuk SQL.
>> AUDIENCE: Tidak, tapi server melakukannya untuk Anda.
>> LUCIANO ARANGO: Ini kutipan kecil di sini, ini kutipan kecil?
>> AUDIENCE: Ya.
>> LUCIANO ARANGO: Ya.
Masalahnya adalah bahwa Anda dapat komentar keluar yang terakhir -
OK, jadi apa yang bisa saya lakukan adalah saya dapat komentar keluar - jadi mari kita lihat - biarkan aku
membuka file text edit.
Mari saya hanya mengedit ini di sini langsung.
OK.
Bisakah kalian melihat bahwa jelas?
Apa yang dapat saya lakukan adalah saya dapat komentar keluar yang terakhir.
Ini akan komentar pada yang terakhir.
Dan kemudian aku akan menempatkan satu di sini, menempatkan semua barang-barang berbahaya di sini.
>> Jadi pengguna sebenarnya memasukkan, kan?
Pengguna tidak memasukkan hal, kan?
Ini adalah apa yang akan saya masukan sebagai orang yang mencoba masuk ke dalam.
Aku akan dimasukkan ke dalam -
itu salah satu tanda kutip.
Hanya saja berlekuk-lekuk oleh kesalahan.
Dan kemudian apa kode adalah akan melakukan -
maaf, aku akan mengambil ini.
Apa kode yang akan dilakukan adalah itu akan menambah pertama
tanda kutip di sini.
Dan itu akan menambah terakhir tanda kutip juga.
>> Dan itu juga akan menambahkan lalu, tanda kutip lalu.
Tapi aku mengomentari kutipan ini menandai keluar, sehingga mereka tidak lari.
Dan aku menyelesaikan kutipan ini menandai di sini.
Apakah Anda mengerti?
Apakah Anda tersesat?
Saya dapat komentar kutipan terakhir mark, dan mengurus
tanda kutip pertama.
>> AUDIENCE: Dan hanya finish yang pertama.
>> LUCIANO ARANGO: Ya.
Dan hanya menyelesaikan yang pertama.
Ya, itu benar.
Itulah yang bisa saya lakukan.
Ya.
Ada pertanyaan lain seperti itu?
Itu pertanyaan yang bagus.
Tidak, ya, mungkin.
Mudah-mudahan, kalian akan membuat semacam lebih masuk akal ketika Anda belajar SQL dan
hal-hal seperti itu.
Tapi pastikan Anda -
menjaga alat-alat ini dalam menonton.
Maaf, alat ini di sini.
Alat-alat ini besar.
Jika seseorang memiliki pertanyaan, Anda juga dapat email saya.
Ini adalah email normal saya.
Dan ini adalah email kantor saya, yang adalah ketika saya bekerja di LAUT.
>> OK, terima kasih.
Terima kasih, guys.
Anda baik untuk pergi.
Anda tidak harus tinggal di sini.
Jangan bertepuk tangan.
Itu aneh.
OK, terima kasih, guys.