Ham SQL Enjeksiyon Riski (ARCH6055)
Anahtar ruby.orm.raw-sql-injection-risk · Önem critical · Kategori orm
Ham SQL’i bağlı parametre yerine string interpolasyonu/birleştirme ile kurmak hem bir SQL enjeksiyon vektörüdür hem de sorgu-plan önbelleğini bozar. Değerler her zaman parametre olarak geçilmelidir.
Hatalı
Bölüm başlığı “Hatalı”def find_by_name(name) User.where("name = '#{name}'") # interpolasyon = enjeksiyonenddef find_by_name(name) User.where("name = ?", name) # bağlı parametreendDüzeltme
Bölüm başlığı “Düzeltme”Ham SQL’de değerleri interpolasyon yerine ? veya isimli bağlamayla parametre olarak geçin.