apakah mungkin untuk mengonfigurasi kata sandi per basis data atau per host di .my.cnf
<p>saya memiliki yang berikut di <code>~/.my.cnf</code> saya</p><pre><code>[client] password="somepass" </code></pre><p>tapi ini bukan kata sandi yang saya gunakan untuk setiap pengguna @ host/database yang saya sambungkan. apakah ada cara untuk menentukan dalam konfigurasi kata sandi yang berbeda untuk hal-hal yang berbeda sehingga saya tidak perlu mengetiknya?</p>
<p>seperti yang saya jawab <a href="https://dba.stackexchange.com/questions/2820/why-dont-my-my-cnf-settings-work/2822#2822">di sini</a> , anda dapat menambahkan bagian untuk setiap pengguna/host/db yang anda hubungkan menggunakan sintaks di <code>~/.my.cnf</code> anda:</p><pre><code>[clienthost1] # note: client + host1 user=myuser password=mypass database=dbname host=server.location.com </code></pre><p>setelah ini ada di pengguna anda <code>.my.cnf</code>, anda dapat menggunakannya dengan melakukan ini pada baris perintah:</p><pre><code>$ mysql --defaults-group-suffix=host1 </code></pre>
<p>katakanlah anda memiliki tabel tempat anda menyimpan kata sandi untuk setiap orang.</p><p>untuk "menyimpan" kata sandi yang dihasilkan, lakukan hal berikut</p><ol> <li>dapatkan login dari pengguna</li> <li>dapatkan kata sandi</li> <li>menghasilkan garam dari nilai acak. katakanlah, dari/dev/random (seperti yang disarankan @michal), anda mendapat "a12bc34de56fg"</li> <li>gunakan beberapa fungsi hashing untuk menghasilkan kata sandi hash. katakanlah kata sandi asli adalah "1 kata sandi" dan anda akan menggunakan hashing sha. anda akan melakukannya</li> </ol><p>hashed\_password = sha (sha (sha (.... sha ("1passworda12bc34de56fg")))))))))))</p><p>simpan kata sandi, dengan login dan garam, di tabel.</p><pre><code>login password salt  john a7b82783... a12bc34de56fg </code></pre><p>dan kemudian, untuk memverifikasi ketika pengguna mengakses aplikasi anda:</p><ol> <li>dapatkan login dan kata sandi</li> <li>ambil garam untuk login dari database (anda akan mendapatkan garam: a12bc34de56fg)</li> <li>gabungkan kata sandi teks biasa dengan garam dan lakukan semua hashing lagi:</li> </ol><p>hashed\_password = sha (sha (sha (.... sha ("1passworda12bc34de56fg")))))))))))</p><p>verifikasi apakah hashed\_password yang anda hitung sama dengan yang disimpan dalam database. anda akan tahu apakah kata sandi itu benar atau tidak.</p><p>itu dia!. anda bisa mendapatkan garam dari sumber acak yang anda suka. kenapa harus acak? karena garam non-acak akan membuatnya lebih mudah untuk mencoba memaksa aplikasi anda.</p> Silakan ikuti panduan untuk mereset kata sandi akun Yahoo Anda, seperti dalam artikel berikut:


 


<https://id.ccm.net/faq/242-cara-mengubah-password-akun-yahoo>


  

--  

*Content Editor & Social Media Manager CCM Indonesia* <p>anda menulis (beri penekanan pada saya):</p><blockquote> <p>semakin tinggi jumlah kata sandi khusus aplikasi <strong>semakin tinggi kemungkinan serangan brute force berhasil.</strong></p> <p>kata sandi ini memiliki panjang yang tetap dan tidak mengandung angka atau simbol, <strong>yang membuatnya lebih rentan terhadap serangan brute force daripada kata sandi dengan panjang yang tidak diketahui yang mengandung huruf, angka, dan simbol</strong>.</p> </blockquote><p>jawaban singkat: tidak dengan cara praktis.</p><p>jawaban panjang:</p><p>lakukan perhitungan matematis: 16 huruf kecil memungkinkan 26 ^ 16 kata sandi yang berbeda, yaitu lebih dari 10 ^ 22 = 10 × 1000 ^ 7 = kemungkinan sepuluh kata sandi sextillion.</p><p>jika kata sandi dipilih secara acak <em> dengan probabilitas yang sama </em> (kami tidak memiliki alasan untuk percaya bahwa ini bukan masalahnya), <strong>kemungkinan memecahkan kata sandi oleh brute force dapat diabaikan</strong>, <em> bahkan jika google tidak melihat serangan itu dan tidak melakukan tindakan balasan apa pun. </em></p><p>bahkan dengan 100 kata sandi khusus aplikasi untuk satu akun google, tidak ada cara bagi siapa pun untuk mencoba serangan ini. "kerentanan" terhadap serangan brute force adalah nol.</p><p>dan <em> jauh lebih mudah </em> pada banyak ponsel pintar untuk mengetikkan kata sandi yang hanya terbuat dari huruf kecil daripada kombinasi huruf dan digit atau huruf besar-kecil ( untuk jumlah kemungkinan kata sandi yang sama).</p><p>anda juga menulis:</p><blockquote> <p>google tidak secara otomatis menonaktifkan kata sandi khusus aplikasi ketika tiba-tiba digunakan di luar konteks yang diharapkan (mis. untuk mengakses email meskipun telah diatur untuk chrome sinkronisasi).</p> </blockquote><p>itulah satu-satunya masalah keamanan nyata di sini.</p> <p>intinya adalah untuk mencegah pembagian biaya serangan: jika seorang penyerang ingin menyerang dua kata sandi, maka itu harus dua kali lebih mahal daripada menyerang satu kata sandi.</p><p>dengan proposal anda ("pertanyaan 1"), dua pengguna dengan kata sandi yang sama akan menggunakan mac yang sama. jika penyerang memiliki akses baca ke basis data anda, ia dapat "mencoba" kata sandi (dengan menghitung ulang mac) dan mencari basis data untuk kecocokan. dia kemudian dapat menyerang <em>semua</em> kata sandi secara paralel, untuk biaya serangan satu. jika <code>long\_string</code> anda adalah sebuah konstanta hardcoded dalam kode sumber aplikasi, maka semua instal aplikasi yang terinstal membagikan konstanta ini, dan menjadi bermanfaat (bagi penyerang) untuk membuat kamus besar pasangan kata sandi ke mac , juga dikenal sebagai "a rainbow table".</p><p>dengan nonce ("pertanyaan 2") anda, anda menghindari pembagian biaya. nonce biasanya dikenal sebagai "garam". <code>long\_string</code> anda dan penggunaan hmac tidak membeli anda banyak di sini (dan anda tidak menggunakan hmac untuk apa itu dirancang, omong-omong, sehingga anda berada pada fondasi yang goyah, berbicara secara kriptografis). menggunakan garam adalah ide yang sangat bagus (well, <em>tidak</em> menggunakan garam adalah ide yang sangat buruk, setidaknya) tetapi hanya melakukan setengah dari pekerjaan. anda juga harus memiliki prosedur hashing <em>lambat</em>. intinya di sini adalah bahwa garam mencegah pembagian biaya, tetapi tidak mencegah menyerang satu kata sandi. menyerang kata sandi berarti mencoba kemungkinan kata sandi sampai satu yang cocok (itulah "serangan kamus"), dan, mengingat imajinasi rata-rata pengguna manusia, serangan kamus cenderung bekerja: orang hanya <em>cinta</em> menggunakan kata sandi yang dapat tebak. solusinya adalah dengan menggunakan proses hashing yang secara inheren lambat, biasanya dengan mengulangi fungsi hash beberapa ribu kali. idenya adalah untuk membuat verifikasi kata sandi lebih mahal: membuat pengguna menunggu 1ms bukannya 1μs bukanlah kesulitan (pengguna tidak akan menyadarinya), tetapi juga akan membuat serangan kamus 1000 kali lebih mahal. <code>long\_string</code> anda <em>boleh</em> digunakan untuk itu, asalkan itu sangat panjang (bukan 2 kilobyte, lebih dari 20 megabita).</p><p>hmac <em>boleh</em> digunakan sebagai ganti fungsi hash mentah untuk memperkuat sistem verifikasi kata sandi, tetapi dalam pengaturan yang berbeda. dengan sistem yang memeriksa kata sandi dengan garam dan fungsi hash yang diulang, anda dapat mengganti fungsi hash dengan hmac, menggunakan kunci rahasia <em> k </em>. ini mencegah serangan kamus offline selama anda dapat menyimpan <em> k </em> rahasia. menjaga kerahasiaan nilai tidak mudah, tetapi masih lebih mudah untuk menjaga 128-bit <em> k </em> rahasia daripada database lengkap.</p> <blockquote> <p>apakah melewatkan id sesi sebagai parameter url benar-benar tidak aman?</p> </blockquote><p>meskipun tidak <em> secara inheren tidak aman </em>, ini bisa menjadi masalah kecuali kodenya dirancang dengan sangat baik.</p><p>katakanlah saya mengunjungi forum favorit saya. itu masuk saya dan menambahkan id sesi saya ke url di setiap permintaan. saya menemukan topik yang sangat menarik, dan menyalin &amp; menempel url ke pesan instan ke teman saya.</p><p>kecuali jika aplikasi telah mengambil langkah-langkah untuk memastikan bahwa ada <em> beberapa </em> bentuk validasi pada id sesi, teman yang mengklik tautan itu <em> dapat </em> mewarisi sesi saya, dan kemudian akan dapat melakukan apa pun yang dapat saya lakukan, seperti saya.</p><p>dengan menyimpan pengidentifikasi sesi di cookie, anda sepenuhnya menghilangkan masalah berbagi tautan.</p><p>ada variasi pada tema ini yang disebut <a href="http://en.wikipedia.org/wiki/session\_fixation">fixation sesi</a> , yang melibatkan <em> yang disengaja </em> berbagi pengidentifikasi sesi untuk tujuan jahat. artikel wikipedia yang ditautkan membahas tentang cara kerja serangan ini dan perbedaannya dari <em> berbagi </em> yang tidak disengaja dari pengidentifikasi sesi.</p><blockquote> <p>mengapa cookie lebih aman?</p> </blockquote><p>cookie <em> dapat </em> lebih aman di sini, karena mereka bukan sesuatu yang dapat disalin dan ditempelkan oleh pengguna normal, atau bahkan dilihat dan dimodifikasi. itu adalah standar yang jauh lebih aman.</p><blockquote> <p>kemungkinan apa yang dimiliki penyerang untuk kedua opsi?</p> </blockquote><p><em> baik </em> dari metode ini aman dari serangan man-in-the-middle melalui komunikasi yang tidak terenkripsi. add-on browser, spyware dan nasties sisi klien lainnya juga dapat memata-matai kedua metode penyimpanan pengidentifikasi sesi.</p><p>dalam kedua kasus, validasi sisi server bahwa klien yang mengklaim memiliki id sesi adalah praktik terbaik. terdiri dari apa validasi ini untuk diperdebatkan. perlu diingat bahwa pengguna di belakang proxy perusahaan dapat melompat di antara alamat ip antara permintaan, jadi mengunci sesi ke alamat ip dapat secara tidak sengaja mengasingkan orang. artikel <a href="http://en.wikipedia.org/wiki/session\_fixation">fixation sesi</a> menyebutkan beberapa alternatif bermanfaat lainnya.</p> <p>letakkan skrip shell di salah satu folder ini: <code>/etc/cron.daily</code>, <code>/etc/cron.hourly</code>, <code>/etc/cron.monthly</code> atau <code>/etc/cron.weekly</code>.</p><p>jika ini tidak cukup untuk anda, anda dapat menambahkan tugas yang lebih spesifik mis. dua kali sebulan atau setiap 5 menit. pergi ke terminal dan ketik:</p><pre><code>crontab -e </code></pre><p>ini akan membuka crontab pribadi anda (file konfigurasi cron). baris pertama dalam file itu menjelaskan semuanya! di setiap baris anda dapat menentukan satu perintah untuk dijalankan dan jadwalnya, dan formatnya cukup sederhana ketika anda terbiasa. strukturnya adalah:</p><pre><code>minute hour day-of-month month day-of-week command </code></pre><p>untuk semua angka yang dapat anda gunakan daftar, mis. <code>5,34,55</code> dalam bidang menit berarti berjalan pada 5 lewat, 34 lewat, dan 55 lewat berapa pun jam yang ditentukan.</p><p>anda juga dapat menggunakan interval. mereka didefinisikan seperti ini: <code>*/20</code>. contoh ini berarti setiap tanggal 20, jadi pada kolom menit itu sama dengan <code>0,20,40</code>.</p><p>jadi, jalankan perintah setiap hari senin jam 5.30 sore:</p><pre><code>30 17 * * 1 /path/to/command </code></pre><p>atau setiap 15 menit</p><pre><code>*/15 * * * * /path/to/command </code></pre><p>perhatikan bahwa hari-hari dari 0-6 di mana 0 adalah hari minggu.</p><p>anda dapat membaca lebih lanjut <a href="https://help.ubuntu.com/community/cronhowto">di sini</a> .</p> <p>shmuel613, akan lebih baik untuk memperbarui pertanyaan awal anda daripada menjawab. lebih baik jika ada satu tempat yang berisi pertanyaan lengkap daripada menyebar dalam diskusi.</p><p>jawaban ben masuk akal, kecuali ia tampaknya memiliki 'tidak' di mana ia tidak menginginkannya. menjatuhkan tabel hanya jika<strong> tidak </strong>ada tidak tepat.</p><p>anda memang membutuhkan banyak pernyataan. buat dengan kondisional lalu isi:</p><ol> <li>buat tabel sementara jika tidak ada fubar (id int, name varchar (80))</li> <li>truncate table fubar</li> <li>masukkan ke dalam fubar pilih * dari barfu</li> </ol><p>atau cukup jatuhkan dan buat ulang</p><ol> <li>drop tabel jika ada fubar</li> <li>buat tabel sementara id select fubar, nama dari barfu</li> </ol><p>dengan sql murni itu adalah dua kelas solusi nyata anda. saya suka yang kedua lebih baik.</p><p>(dengan prosedur tersimpan anda bisa menguranginya menjadi satu pernyataan. sesuatu seperti: truncateandpopulate (fubar) tetapi pada saat anda menulis kode untuk truncateandpopulate () anda akan menghabiskan lebih banyak waktu daripada hanya menggunakan sql di atas.)</p> <p>saya sarankan anda memulai dengan yang di wordpress <a href="http://wordpress.org/tags/wp-multi-network?forum\_id=10">forum dukungan wp multi network plugin</a> . saya hanya dapat menyarankan ini karena saya tidak memiliki pengalaman khusus dengan plugin itu dan saya berasumsi bahwa ia memiliki implikasi dns untuk host yang ingin anda gunakan.</p><p>selain itu, anda mungkin ingin membuat pertanyaan anda lebih jelas dan memberi tahu lebih banyak tentang pengaturan yang anda jalankan (server, layanan, dns, dan sebagainya). langkah mana yang sudah anda lakukan dan sejenisnya.</p><p>tapi mungkin anda sudah menemukan jawaban anda di forum itu.</p> kata kunci merupakan sebuah kata atau konsep dengan keistimewaan, yang berarti kata apapun yang digunakan sebagai kunci dan kode untuk menghubungkan ke kata lain atau informasi lain. kata kunci pada blog terbagi menjadi dua yaitu:
 


 kata kunci pendek, yaitu kata kunci yang hanya terdiri dari maksimal dua suku kata.
 kata kunci panjang, yaitu kata kunci yang lebih dari dua suku kata.



dengan demikian, kata kunci hendaknya terdiri dari dua suku kata atau lebih dari dua suku kata. <p>sepertinya tidak ada cara untuk memberikan <em>integrasi aplikasi -&gt; nama domain</em> dan <em>federasi -&gt; penyedia identitas</em> melalui cloudformation.</p><p>saya hanya menemukan referensi untuk <a href="https://docs.aws.amazon.com/awscloudformation/latest/userguide/aws-resource-cognito-userpoolclient.html"><strong>user pool client</strong></a> (<em>pengaturan umum -&gt; klien aplikasi</em>) tetapi tidak akan mengonfigurasi <em>integrasi aplikasi -&gt; pengaturan klien aplikasi</em>.</p><p>jika anda perlu mengotomatisasi proses penyediaan <a href="https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-domain.html"><em>nama domain</em></a> , <a href="https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-identity-provider.html"><em>penyedia identitas</em></a> dan <a href="https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html"><em>pengaturan klien aplikasi</em></a> untuk kelompok pengguna , anda dapat melakukannya dengan membuat skrip khusus (aws cli) atau lambda (aws sdk) yang harus dilakukan setelah penyebaran tumpukan.</p><p><br/> <strong>perbarui</strong></p><p>lihatlah <a href="https://github.com/rosberglinhares/cloudformationcognitocustomresources"><strong>contoh luar biasa</strong></a> ( <a href="https://stackoverflow.com/a/50980165/9576697">jawaban di bawah</a> ) yang menunjukkan penggunaan <a href="https://docs.aws.amazon.com/awscloudformation/latest/userguide/template-custom-resources.html">cloudformation custom resources</a> dengan lambda.</p>