20 MAYIS 2020
ÇARŞAMBA
13.22
Deno Permissions

Buradaki konuların anlatımlarını yaparken Deno'nun kendi kılavuzundan yararlanacağız.

İzinler Nedir?

Deno'nun güvenli olduğundan bahsetmiştik. Aslında flagler sayesinde bu güvenlik için bir takım kurallar belirleyebiliyorduk. Örneğin bir dosyaya erişim izni için --allow-read flag'ini kullanabiliyorduk. Fakat bu durumda programın tüm dosya sistemine erişmesine izin vermiş oluyoruz. Bunun önüne geçmek için sadece belli bir dosyaya izin vermesini sağlayabiliriz.

Örnek

Programımızda users adında bir klasör ve içerisinde de mert.json ve ahmet.json adında 2 tane dosyamız olsun. Biz mert.json'a erişebilirken eğer ahmet.json'a erişmek istersek hata almayı sağlayabiliriz. Bunu şöyle bir yol ile yapalım:

Dosyalarımızdan mert.json ve ahmet.json içerisinde name ve surname parametreleri bulunuyor. Amacımız burda eğer ahmet.json'a erişilmek istenirse bunu engellemek olsun. Aynı şekilde bunu dosyalara da uygulayabiliriz.

get.js içerisinden bu dosyalara sırasıyla erişmeye çalışacağız:

const file = await Deno.open('users/ahmet.json');
await Deno.copy(file, Deno.stdout);
file.close();

Console'da doğrudan şunu deneyebiliriz:

deno run --allow-read get.js

Bu durumda tüm okuma izinlerini verdiğimiz için hangi dosyayı istediğine bakmadan içeriğini alabileceğiz.

Fakat eğer biz yalnızca ahmet.json'a erişmesine izin vermek isteseydik:

deno run --allow-read=users/ahmet.json get.js

şeklinde çalıştırmamız gerekecekti. Ve çıktımız:

olacaktı.


Eğer biz ikinci senaryomuzdaki gibi çalıştırmak isterken get.js bizden mert.json'a erişmeye çalışsaydı:

const file = await Deno.open('users/mert.json');
await Deno.copy(file, Deno.stdout);
file.close();

şöyle bir çıktı elde edecektik:

Gördüğünüz gibi PermissionDenied! Dolayısıyla artık iznimiz olmadan herhangi bir klasör veya dosyaya erişimi kısıtlayabiliyoruz. Bu durumun aynısı write içinde geçerli.

Kaynaklar

YORUMLAR 1
0
Kenan Ercan
06 EKİM 2020 - 13.52
ellinize sağlık
CEVAPLA
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et