ASP.Net Core Projelerinde Güvenlik — CORS (Giriş)

Herkese Merhabalar,

Önceki yazımda ASP.Net Core projelerinde Secret Protection konusundan bahsetmiştim. Bu yazımda ise projemizde ise CORS (Cross-Origin Resource Sharing) ile ilgili topladığım bilgileri sizlerle paylaşacağım. Faydalı olması dileğiyle . :)

  • Browserlar’da; Web sayfasından farklı bir domaine istek gerçekleştirdiğinde, işlem reddedilir. Bu güvenlik işlemi Same Origin Policy olarak adlandırılır. Yapılan bu işlem tamamen güvenlik amaçlı gerçekleştirilmektedir.
  • Browserlar için farklı domain ne anlama gelir peki ? Farklı domain aslında “Protocol farklı,Host farklı, Port farklı” anlamına gelmektedir.
  • Örnek vermek gerekirse , bir sitenin 4000 portu ile 4001 portu farklı bir domain olarak algılanır.
  • Bir ASP.Net Core API projemiz olsun. Ve dışarıdan bu Api’deki endpointleri kullanabileceğimizi, çağırabileceğmizi hayal edelim. Yani basitçe şu şekilde düşünün. ASP.Net Core API projeniz içerisinde yazmış olduğunuz metotları , başka bir Web Uygulaması kullanacak. Ve bu API projesindeki Urlleri çağırarak işlem gerçekleştireceksiniz. Yani Web Projenizi belirli bir metotunda API’deki Update metotunuzun çağrılması gibi düşünebilirsiniz.
  • API projenizdeki metotları çağıracağınız Web projeniz, MVC projesi olabilir.
  • Bu Web projenizden Api projenize istek gerçekleştirdiğiniz zaman zaman .NET Core uygulamasından response olarak NoAccess-Control-Allow-Origin’ Header’ı döndürülür ve tam bu noktada Same Origin Policy devreye girmiş olur.
  • Projelerimizde Same Origin Policy güvenliğini esnetebilmek için CORS (Cross-Origin Resource Sharing) devreye girer.

CORS bir güvenlik önlemi değildir!

  • ASP.NET Core Api uygulamamızda CORS belirtmezsek, o zaman bu projemize hiç istek yapılamaz. CORS sayesinde, bu API uygulamasına hangi domainden gelen isteklerin kabul edilebileceğini belirleriz.
  • Öncelikle Web Uygulaması Api’ye istekte bulunur.
  • İstekte bulunurken Request kısmında Origin Key adında bir alan gönderilir.
  • Bu alan aslında web uygulamasının URL’idir. (kaynağıdır.).
  • Request Api tarafına Origin olarak gönderilir.
  • Api uygulamasında ise Response olarak Access-Control-Allow-Origin’e eş değer bir domain gönderilirse (yani web uygulamasının URL’ini) o zaman işlem olumlu olarak sonuçlanmış anlamına gelir.
  • Bu sayede Same Origin Policy esnetilmiş olur.

Bir sonraki yazımda görüşmek üzere …

https://github.com/KardelRuveyda/ASPNetSecurity kodları Github ‘da oluşturduğum Repository’den inceleyebilisiniz.

Kaynakça

Software Specialist— @DogusTechnology

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store