JavaScript kodlama işlemleri sırasında güvenliği sağlamak oldukça önemlidir Bu yazıda, JavaScript kodlama sırasında nelere dikkat etmeniz gerektiğini ve güvenliği nasıl sağlayabileceğinizi öğreneceksiniz Hemen okuyun ve güvendeyken kodlayın!

Web uygulamalarının hayatımıza girmesiyle birlikte, Javascript kullanımı da arttı. Ancak, Javascript kullanımı riskleri de beraberinde getirebilir. Bu nedenle, Javascript kodlama sırasında birkaç güvenlik önlemi almak çok önemlidir.
Öncelikle, güvenli formlar ve inputlar oluşturmak gerekmektedir. Kullanıcılar web uygulamasının formlarına veri girişinde bulunurken, bu verilerin güvenli bir şekilde depolanması gerekmektedir. Bu verilerin kötü niyetli kullanıcılara sızmasını engellemek için, XSS saldırılarına karşı korunmak gereklidir. Bunun için, giriş yapılacak alanların uzunluğunun kontrol edilmesi, özel karakter kullanımının engellenmesi, verilerin filtrelenmesi, kodlama tekniklerinin kullanılması gibi öneriler uygulanabilir.
LocalStorage veya cookies üzerindeki verilerin güvenliği de sağlanmalıdır. Önemli verilerin depolanacağı alanlar belirlenmeli ve bu alanların güvenliği sağlanmalıdır. Bunun yanı sıra, Cross-Origin İstek Saldırılarına karşı da dikkatli olunmalıdır. Başka sitelerin JavaScript kodlarının sitenize erişmesini engellemek ve saldırılara karşı korunmak için doğru yöntemleri uygulamak gerekmektedir.
- Content Security Policy kullanımı,
- Linklerin güvenliği,
- Form güvenliği,
gibi konular da Javascript kodlama sırasında güvenlik açısından dikkat edilmesi gereken diğer hususlardır. Bütün bu önlemler doğru bir şekilde uygulanarak, Javascript kodlama sırasında güvenli bir web uygulaması geliştirilebilir.
XSS Saldırılarına Karşı Korunmak
XSS saldırıları, kod yürütme yerine, örneğin kullanıcının oturum açma kimlik bilgilerinin çalınması gibi kötü amaçlı faaliyetlerde bulunmak isteyen kötü niyetli kişilere fırsat verir. Bu nedenle, kullanıcıların erişebileceği tüm form alanları ve giriş alanları mutlaka güvenli hale getirilmelidir. XSS saldırılarının önlenmesi için, input ve textarea alanlarında kullanıcıların klavyeden girdiği tüm veriler kontrol edilmelidir.
Aynı zamanda, kullanıcıların girdiği verilerin güvenliği için birkaç önlem alınabilir. Örneğin, JavaScript kodları yöntemiyle yüzeyel olarak temizlenebilir. Ayrıca, escape() ve unescape() fonksiyonları sayesinde saldırganların yürütmesini önleyebilirsiniz.
Güvenli Uygulama | Örnek Kod |
---|---|
Kullanımı Önleme | <script> kaydetme() </script> |
İnceleme | var username = prompt("Kullanıcı Adı Giriniz"); |
escape() ile Korumalı Kodlama | var username = escape(prompt("Kullanıcı Adı Giriniz")); |
Bu tür saldırıların önlenmesi için ayrıca kullanılan CSP(Content Security Policy) özelliği de vardır. Bu yöntemle, sitenin hangi URL'lerden dosya alabileceği kontrol edilir. Bu şekilde, saldırganların siteniz üzerinden veri çalmasının önüne geçilebilir.
- Gerekli zamanlarda çalışan bir Whitelisting veya Blacklisting mekanizması kullanarak koruma sağlayın.
- {% raw %}<script src="//example.com">{% endraw %} gibi dinamik olarak URL oluşturarak saldırganların yüklemesine izin vermeyin.
Veri Güvenliği
JavaScript kodlama sırasında veri güvenliği oldukça önemlidir. Çünkü önemli verilerinizi güvenli bir şekilde depolamazsanız, saldırılara karşı açık hale gelebilirsiniz. Verilerinizi güvenli bir şekilde depolamak için localStorage veya cookies kullanmanız gerekiyor. Ancak, bu kullanım sırasında da bazı güvenlik riskleri mevcut olabilir.
Bu nedenle, önemli verileri depolamadan önce güvenlik önlemleri almanız gerekiyor. Bu konuda yapabileceğiniz bazı şeyler:
- Verilerinizi şifreleyin ve/veya doğrulayın
- Verilerinizi düzenli olarak yedekleyin
- LocalStorage veya cookie kullanırken, verileri sadece güvenli sayfalarda kullanın
- Verilerinizi acele ile depolamayın, özenle yapın
- Kullanıcının verileri değiştiremeyeceğinden emin olun
Veri güvenliği konusunda dikkat edilmesi gereken diğer bir konu da, veri depolama yöntemleridir. Verilerinizi localStorage veya cookies üzerinde depolamadan önce bunların güvenli olduğundan emin olun. Bu konuda kullanabileceğiniz bazı kütüphaneler de mevcut, güvenli depolama yöntemleri sağlayan bu kütüphaneleri kullanabilirsiniz.
Özetle, önemli verilerinizi güvenli bir şekilde depolamanın yolları mevcut ancak bunu yaparken dikkatli olabilirsiniz. Verilerinizi düzenli olarak yedekleyin, şifreleyin, doğrulayın ve sadece güvenli sayfalarda kullanın. Ayrıca, güvenli bir depolama yöntemi seçtiğinizden emin olun.
Cross-Origin İstek Saldırıları
Cross-Origin İstek Saldırıları, tarayıcınızdaki bir web sayfasında çalışan JavaScript'in başka bir web sayfasının ya da sunucunun kaynaklarına erişmesine izin veren bir tür güvenlik açığıdır. Bu tür saldırılar, kötü niyetli sayfaların, kullanıcının tarayıcısındaki bilgilerine erişebilmesine olanak sağlayabilir.
Bunun önüne geçmek için, sitenizde öncelikle Cross-Origin Resource Sharing (CORS) prensibini uygulamalısınız. Bu prensip sayesinde, başka sitelerin JavaScript kodları sitenize erişemeyecektir. Bunun yanı sıra, güvenliği artırmak için HTTPS protokolünü kullanmalısınız.
Bir diğer önlem alınması gereken konu ise, gerekli olmadığı sürece üçüncü taraf script'leri kullanmaktan kaçınmaktır. Ayrıca, HTTP Only ve Secure flag'leri kullanıcıların cookies üzerinde kötü amaçlı bir saldırıya maruz kalmasını engelleyen diğer önlemlerdir.
Kullanıcıların tarayıcısındaki bilgilerinin güvenliği önemlidir. Bu nedenle, JavaScript kodlama sırasında güvenliği sağlamak, saldırılara karşı koruma sağlar. Bu yönde alınacak önlemler sayesinde, sitenizdeki kullanıcıların verileri daha güvende olacaktır.
Content Security Policy Kullanımı
Content Security Policy (CSP), bir web sitesinde yer alan içeriklerin kaynaklarına, sunucularına ve türüne göre hangilerinin güvenilir olduğunu belirleyen bir güvenlik önlemidir. Bu sayede XSS ve benzeri saldırıların önlenmesine yardımcı olur. CSP, HTTP başlıklarında belirtilen bir dizi direktiften oluşur.
Bir CSP politikası oluştururken belirli kaynakları engellemek veya onaylamak için http, https, data, chrome-extension, vb. gibi protokollerin kullanılması mümkündür. Ayrıca, inline script ve eval kullanımını da sınırlayabilirsiniz. CSP kullanarak web uygulamalarınızın güvenliğini artırabilirsiniz.
Directives | Açıklaması |
---|---|
default-src | Genel kaynaklar için varsayılan politikaları tanımlar |
script-src | JavaScript kaynakları için politikaları tanımlar |
style-src | CSS kaynakları için politikaları tanımlar |
img-src | Görüntü kaynakları için politikaları tanımlar |
connect-src | Ağ bağlantıları için politikaları tanımlar |
font-src | Yazı tipi kaynakları için politikaları tanımlar |
object-src | Program nesnesi kaynakları için politikaları tanımlar |
media-src | Medya kaynakları için politikaları tanımlar |
frame-src | Iframe kaynakları için politikaları tanımlar |
manifest-src | Web manifest dosyası için politikaları tanımlar |
worker-src | Web worker kaynakları için politikaları tanımlar |
form-action | Gönderilen form bilgileri için politikaları tanımlar |
Ancak, CSP uygulaması sorunlara neden olabilir. Eğer doğru yapılandırılmamışsa, tam tersine kötü bir etki yaratabilir. CSP politikalarınızı test etmek ve hata ayıklamak için Chrome ve Firefox gibi modern tarayıcılarda bulunan Developer Tools kullanabilirsiniz.
Linklerin Güvenliği
JavaScript kodlaması sırasında, dikkat edilmesi gereken bir diğer önemli konu da açılan linklerin güvenliği. Kötü niyetli kişiler açılan linkler aracılığıyla çeşitli saldırılarda bulunabilirler. Bu nedenle, JavaScript kodlarında açılan linklere yönelik bazı güvenlik önlemleri alınması gerekmektedir.
Bunun için, öncelikle belirli kuralların oluşturulması gerekmektedir. Açılan linklerin güvenliği için XMLHTTPREQUEST nesnesi kullanılabilir ve böylece istenen bağlantıya güvenli bir şekilde yönlendirilir. Ayrıca, target="_blank" seçeneğini kullanarak yeni bir pencerede açılan linklerin güvenliği sağlanabilir. Bu sayede, kötü niyetli kişilerin site içinde herhangi bir veriye ulaşmaları engellenir.
Bununla birlikte, açılan linklerle ilgili bir diğer önemli nokta da doğrulama işlemidir. Linklerin açılması öncesinde bir doğrulama işlemi yapılmalıdır. Bu doğrulama işlemi sayesinde kullanıcının tıkladığı linkin güvenli olup olmadığı kontrol edilir. Eğer link güvenli değilse, kullanıcı uyarılır ve link açılmaz.
Linklerin güvenliği için ayrıca SSL sertifikası kullanılması da önemlidir. SSL sertifikası sayesinde, kullanıcıların girdiği verilerin üçüncü kişiler tarafından ele geçirilmesi önlenir. Ayrıca, SSL sertifikası sayesinde siteye yapılan herhangi bir saldırının tespit edilmesi daha kolay hale gelir.
Son olarak, açılan linklerin güvenliği için düzenli olarak JavaScript kodları güncellenmelidir. Bu güncelleme sayesinde, yeni ortaya çıkan güvenlik açıkları tespit edilerek, bu açıkların kapatılması sağlanabilir. Güncellemeler sayesinde, siteye yapılabilecek herhangi bir saldırı engellenmiş olur.
Form Güvenliği
Web geliştirme sürecinde, kullanıcıların form doldurma işlemi, site sahiplerinin en çok dikkat ettiği noktalardan biridir. Bunun nedeni, formların yapısal olarak güvenlik açıklarına sahip olmasıdır. Formlarda kullanıcıların girdiği bilgiler, web uygulamasının backend tarafından işlenerek veritabanına kaydedilir. Bu sebeple, formların güvenliği büyük önem taşır.
Formların güvenliği için kodlama teknikleri uygulamak oldukça önemlidir. Bunlar arasında; gerekli görsel arayüz tasarımları, ayırt edici hata mesajları, SQL injection ve diğer benzer saldırılara karşı koruma gibi önemli güvenlik uygulamaları yer alır.
Bunların dışında, çift faktörlü kimlik doğrulama, captcha testleri, HTTPS kullanımı, güvenli TLS sertifikaları, oturum yönetimi ve veri şifreleme gibi güvenlik önlemleri de uygulanabilir. Bazı form alanlarına veri kısıtlamaları ve form alanlarının boyutlarına sınırlandırmalar da eklemek, form güvenliğini sağlamak için atılacak adımlar arasındadır.
Güvenlik Önlemi | Açıklama |
---|---|
Veri Kısıtlamaları | Bir metin kutusuna girilen verilerin sayısı veya karakter uzunluğu gibi belirli bir kısıtlama getirilir. |
Form Alanı Boyut Sınırlandırmaları | Belirli form alanlarına boyut sınırı getirilerek, kullanıcıların fazla veri girmeleri engellenir. |
Güvenli TLS Sertifikaları | Veri güvenliği için sertifikalar kullanmak büyük önem taşır. SSL / TLS sertifikaları, sunucudan tarayıcıya veri göndermeden önce verileri şifreler ve gönderir. |
Formların güvenliği, kullanıcı verilerinin korunması için elzemdir. Bu sebeple, web geliştiricileri tüm bu önlemlerin yanı sıra, yapısal olarak güçlü form tasarımları oluşturarak, site kullanıcılarına daha güvenli bir deneyim sunabilirler.
Autorun Kodlama Saldırılarına Karşı Korunmak
Javascript'de kullanılan autorun özelliği, kodların yürütülmesinde bir kolaylık sağlar. Ancak, bu özelliğin de güvenlik açıkları oluşturduğu bilinmektedir. Dolayısıyla, kodlama sırasında alınacak önlemler, autorun saldırılarına karşı korunmayı da içermelidir.
Autorun ile oluşturulmuş olan kod, bir sayfa açıldığında doğrudan çalıştırılabilme özelliğine sahiptir ve dolayısıyla zararlı kodlar da kolayca yürütülebilir. Bunun önüne geçebilmek için, kodlama sırasında autorun özelliğinin kullanımı azaltılmalıdır. Bunun yerine, kodlar yürütülmeden önce kullanıcı tarafından onaylanmalıdır. Ayrıca, güncellemeleri de kontrol edilmeli ve gerekli güvenlik duvarları oluşturulmalıdır.
- Autorun özelliği yerine kodları doğrudan yürütmek, daha az güvenli olsa da daha kontrol edilebilirdir.
- Güvenlik duvarları oluşturulurken, kodların dosyalar üzerindeki etkileri de değerlendirilmelidir.
Bunun yanı sıra, kodların düzenliliği ve sadeleştirilmesi de güvenliği artıracaktır. Ayrıca, güvenlik açıklarını tespit etmek ve gidermek için düzenli olarak test edilmesi önemlidir. Bu şekilde, autorun saldırılarından korunmak mümkün olacaktır.
Kısacası, autorun özelliği kodların kolayca yürütülmesini sağlasa da kötü amaçlı saldırılara açık bir güvenlik açığıdır. Bu nedenle, kodlama sırasında autorun özelliğinin azaltılması ve alternatif önlemler alınması önemlidir. Kodların düzenli olarak test edilmesi ve güvenlik duvarlarının oluşturulması da unutulmamalıdır.
Eval Kullanımı Riskleri
Eval, JavaScript'te güçlü bir özelliktir, ancak kodlama sürecinde kullanımı oldukça risklidir. Eval kullanımının neden riskli olduğu ise, kötü niyetli kişilerin sitede XSS saldırıları yapabilecek olmasıdır. Eval ile birlikte herhangi bir veri kullanılıyorsa, bu veri tamamen kontrol edilemez hale gelir ve güvenlik riski çok yüksek olur.
Bu nedenle, Eval'ın kullanımından kaçınılmalı, başka bir çözüm varsa o tercih edilmelidir. Ancak Eval kullanılması gerekiyorsa, güvenlik önlemi almak için yapılması gereken adımlar vardır. Öncelikle, kullanılan verinin doğru bir şekilde filtrelenmesi ve doğrulanması gerekir. Veri doğrulama işlemleri için mutlaka uygun fonksiyonlar kullanılmalıdır.
- Veri doğrulama işlemleri için mutlaka uygun fonksiyonlar kullanılmalıdır.
- Kullanıcıdan alınan verilerin uygun işlem yapılmadan Eval fonksiyonuna gönderilmemesi gerekir.
- Güvenlik açısından, Eval fonksiyonunun kesinlikle kullanılmaması tercih edilmelidir.
Eval kullanımının yol açtığı güvenlik riskleri ve bunları önlemek için takip edilmesi gereken adımlar bu şekildeyken, kodlama sürecinde bu risklerin farkına varmak ve önlemek oldukça önemlidir. Güvenlik açıklarını önlemek için, kodlama sürecinde sürekli olarak güncellemeler takip edilmeli ve güvenlik önlemi alınmalıdır.
RegEx DoS Saldırıları
RegEx DoS saldırıları, kötü niyetli kişilerin bir web sitesinin regüler ifadelerine yetersiz veya hatalı girdi sağlayarak siteyi çökertmelerine neden olabilir. Bu tarz saldırılar genellikle bir dizedeki büyük rakamlı ifadeler veya karakterlerin kullanımı ile gerçekleştirilir. Saldırganlar, noktalı virgül, boşluk, sayılar veya harfleri gibi basit karakterleri bir araya getirerek, çok karmaşık ifadeler üretebilirler.
RegEx DoS saldırılarını önlemek için aracılar olarak JavaScript kütüphaneleri kullanılabilir. Bu kütüphaneler, siteye giren kullanıcı girdilerini doğru bir şekilde kontrol ederek, gereksiz yere yüksek hesaplama veya gecikme süresi gerektiren regüler ifadeleri engeller. Ayrıca, regüler ifadelere sınırlandırmalar ekleyerek doğru ve kesin bir şekilde kontrol edebilirsiniz.
Aynı zamanda, kodlama aşamasında güvenlik için, düzenli ifadelerin karmaşıklığını sınırlayan kurallar belirleyebilirsiniz. Örneğin, bu kurallarda maksimum karakter sayısı veya belirli karakterlerin kullanılmaması gibi kısıtlamalar yer alabilir. Bu tür önlemler, saldırganların siteye girerken ne tür ifadeler kullanabileceklerini sınırlayarak, sitenizi bu tarz saldırılardan koruyabilir.
Sonuç olarak, regüler ifadeleri güvenli hale getirmek için belirli tekniklerin kullanılması ve sınırlamaların belirlenmesi gereklidir. Bu teknikleri kullanarak, sitenizin regüler ifadelerle ilgili riskleri önleyebilirsiniz ve sitenizin güvenliği için önemli bir adım atabilirsiniz.