| Public Data Assigned to Private Array Açıklığı (CWE-496) | |||||
| Bu makalede Public Data Assigned to Private Array (CWE-496), yani Private Diziye Atanmış Public Veri açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Private dizinin dışarıdan modifiye edilebilmesi Açıklığın Açıklaması: Nesne yönelimli programlamalarda private tanımlanmış bir sınıf field (üye) dizisi encapsulation prensibi gereği sadece aynı sınıfın kendi metotları üzerinden erişilebilir ve modifiye edilebilirdir. Ancak private dizi field’ına public bir setter metodu ile public bir dizi atanırsa encapsulation ihlal olur. Çünkü artık private dizi public diziyi tuttuğundan dışarıdan erişilebilir ve modifiye edilebilir hale gelir. Bu dahili verinin kontrolü kaybı çeşitli zafiyetlere kapı aralar. Örneğin veri bütünlüğü sorunları, dahili verilerin sızdırılması veya güvenlik mekanizmalarının atlatılabilmesi gibi. Private dizilere public veri atanmasına “Private Diziye Atanmış Public Veri (CWE-496)” açıklığı adı verilir. Örneğin bu açıklığa sahip Java kod bloğu verilmiştir: Java - Güvensiz Kod Bloğu:
// Setting The Private Data Member Value Directly
public class Person {
private String[] visited = {"New York", "California", "Colorado"};
public void setVisited(String[] visited){
this.visited = visited;
}
}
Bu örnekte setVisited() metodu public olarak kontrol edilebilen bir diziyi private üye değişkene atamıştır. Bu ise Java’da diziler mutable (değişebilir) olduklarından çağırıcı metoda private diziyi doğrudan modifiye etme izni vermiştir. Bu nedenle güvensizdir. Private bir dizi değişkenine setter metodu ile public bir veri atamadan sakınılması gerekir. Java - Güvenli Kod Bloğu:
// Setting The Private Data Member Value
// Through An Intermediate Object
public class Person {
private String[] visited = {"New York", "California", "Colorado"};
public void setVisited(String[] visited){
this.visited = Arrays.copyOf(visited, visited.length);
}
}
Bu örnekte ise private dizi değişkeni public setter metodu ile bir public referansı doğrudan almamaktadır. Bunun yerine public referansın gösterdiği verinin kopyasını almaktadır. Bu katmanlı kullanım güvenli olan yol kabul edilmektedir. Açıklığın Önlemi:
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 16:39:39'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 16:39:39'de yazılmıştır.