Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL SecureString sebagai string koneksi

Ada cara lain untuk melakukannya. Itu tergantung pada siapa yang menurut Anda akan datang setelah rangkaian koneksi Anda dan jenis akses dan tingkat keterampilan apa yang akan mereka miliki. String koneksi ada di sana, di suatu tempat, tidak peduli bagaimana Anda mencoba menyembunyikannya.

Mengetahui bahwa string koneksi dapat diretas, saya selalu berasumsi bahwa itu akan diretas dan mengambil tindakan pencegahan di ujung yang lain.

Kami melakukan beberapa hal di ujung server DB untuk memastikan bahwa meskipun string koneksi dikompromikan, data tetap aman.

  • Pengguna yang dikaitkan dengan string koneksi hampir tidak memiliki izin di server. Satu-satunya izin yang mereka miliki adalah EXECUTE dan CONTROL pada SCHEMA yang berisi Stored Procedures.
  • Satu-satunya akses yang dimiliki front end adalah melalui prosedur tersimpan. Kami tidak pernah mengizinkan front end untuk mengirim SQL Strings.
  • Data disimpan dalam skema terpisah dari yang dapat dieksekusi, dalam skema DATA pengguna yang terkait dengan string koneksi memiliki izin NOL, mereka tidak dapat melihat, mencium, atau menyentuhnya.
  • Prosedur yang tersimpan mendelegasikan izin kepada pengguna yang tidak masuk yang memiliki izin yang cukup untuk menjalankan proc. (DENGAN EKSEKUSI SEBAGAI 'Pengguna tanpa login')

Ini tentang semua yang bisa kita lakukan. Kami belum menemukan cara untuk mencegah agar string koneksi tidak terekspos di suatu tempat.

Sebagai jawaban atas pertanyaan yang diajukan Alex di bawah ini. (terlalu panjang untuk berkomentar)

Catatan. Berikut ini adalah untuk MS SQL Server, ini mungkin berlaku untuk sistem DBMS lain tetapi saya tidak dapat menjamin yang lain.

Database berisi Skema, Skema berisi Objek Database seperti tabel, tampilan, prosedur tersimpan. Schmea memungkinkan Anda untuk memagari objek basis data, misalnya, jika Anda memiliki sekelompok tabel yang dapat dilihat siapa pun, maka mereka dapat masuk ke dalam skema UMUM, jika Anda memiliki informasi penggajian yang perlu Anda amankan, Anda dapat menempatkan yang menjadi skema PAYROLL. Anda kemudian dapat menempatkan langkah-langkah keamanan yang berbeda pada SCHEMA berdasarkan jenis objek yang ada di dalamnya. Secara grafis mereka terlihat seperti folder pada hard drive dan di bawahnya adalah semua objek database yang dikandungnya. Saat Anda menjalankan server Anda, ada beberapa skema yang dibuat secara otomatis. Salah satu yang paling Anda kenal adalah skema DBO. Anda mungkin tidak menyadarinya jika admin Anda telah mengaturnya sebagai skema default Anda.

Apa yang kami lakukan adalah menempatkan semua data ke dalam skema DATA, ini berarti hanya tabel yang diperbolehkan. Jadi jika kita memiliki database penggajian maka tabel data akan masuk ke skema yang disebut dataPayroll.

Stored Procedure adalah blok, atau blok kode SQL yang dapat dijalankan oleh server Database saat dipanggil. Itu bisa mengembalikan Tabel data, atau nilai tunggal. Anggap saja sebagai metode dalam C#.

Prosedur tersimpan memiliki masukan, dan mengembalikan parameter yang digunakan dalam kode SQL. Prosedur Tersimpan Paramatarized adalah pertahanan yang kuat terhadap serangan SQL Injection.

Protokol kami mengatakan bahwa Prosedur dan Tampilan Tersimpan semuanya disimpan dalam skema yang didahului oleh 'prog'. Jadi, dalam kasus database penggajian, semua objek yang bukan data ada di dalam skema progPayroll.

Pengguna yang ditentukan oleh string Koneksi kemudian hanya memiliki izin Kontrol dan Jalankan pada Skema 'prog'. Ini memungkinkan mereka untuk memanggil Prosedur Tersimpan. Pengguna yang ditentukan oleh string koneksi ditolak semua izin lainnya. Pengguna ini juga ditolak SEMUA izin di tempat lain. Dalam prosedur Tersimpan, izin untuk mengakses data didelegasikan ke pengguna NO LOGIN yang memiliki izin untuk mengambil data dari skema 'data' menggunakan perintah EXECUTE AS.

TIDAK ada sql di ujung depan. Semua pemrogram ujung depan tahu apa nama prosedur tersimpan, parameter, dan jenis serta nilai yang dikembalikan.

Dengan cara ini, bahkan jika penyerang berhasil mengeluarkan string koneksi dari program Anda, mereka masih memiliki banyak pekerjaan yang harus dilakukan untuk dapat melakukan apa pun ke database Anda karena pengguna yang mereka miliki hanya dapat menjalankan Prosedur Tersimpan.

Jika Anda tidak tahu apa itu semua, maka Anda benar-benar perlu mendapatkan programmer DB untuk mengatur sistem Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan memperbarui database MySQL:DUPLICATE DEFAULT ENTRY FOR PRIMARY KEY ='0'

  2. Yii2 :Mengubah kueri mentah menjadi ActiveRecord

  3. Hasil Grup Concat Terpotong

  4. Bagaimana cara mempertahankan koneksi database di server web python

  5. Pilih database secara dinamis