Ini mungkin pertanyaan bodoh tapi saya bertanya-tanya mengapa saya tidak bisa menjalankan skrip PowerShell saja ( ps1
) karena saya akan menjalankan bat
file?
Bahkan jika PS memiliki beberapa tambahan (di-aman) perintah maka saya dapat selalu memotong pengaturan keamanan dan menjalankan ini dari kelelawar: Powershell.exe -executionpolicy remotesigned -File .\do_whatever.ps1
. Jika saya bisa dengan mudah menipu pengguna untuk menjalankan skrip yang tidak ditandatangani, lalu apa gunanya konsep skrip penandatanganan?
Tentunya saya kehilangan beberapa masalah keamanan ... Benar?
Jawaban:
Ini pemeriksaan kesetiaan.
Pikirkan tentang "Peringatan Sertifikat" yang Anda lihat di situs HTTPS - Anda bisa 'berikutnya' melewati peringatan, tetapi peringatan itu akan mengingatkan Anda akan sesuatu yang serba salah.
Salah satu hal yang berguna dengan penandatanganan adalah Anda tahu jika skrip Anda telah diubah. Pertimbangkan ini:
Anda membuat skrip untuk menjalankan pembersihan ClearIISLogs.ps1 dan mengatur Tugas Terjadwal yang ditingkatkan untuk menjalankannya setiap hari. (powershell.exe clearIISLogs.ps1)
Dalam hal ini, jika pengguna dengan akses tulis pada ClearIISLogs.ps1 mencoba untuk mengubah skrip, tugas yang dijadwalkan akan gagal dieksekusi. Skrip harus ditandatangani oleh penerbit tepercaya lagi, sebelum eksekusi diizinkan.
Jika Anda mengkonfigurasi Tugas Terjadwal untuk mem-bypass keamanan powershell (-setexecuitionpolicy unrestricted), ClearIISLogs.PS1 yang dimodifikasi akan dieksekusi tanpa repot ...
sumber
clearIISLogs.ps1
. Tetapi jika saya memiliki akses keclearIISLogs.ps1
dan memiliki sertifikat penandatanganan kode saya masih dapat mengganti AndaclearIISLogs.ps1
dengan apa pun. Anda bahkan tidak akan memperhatikan.