Dosya Dahil Etme Enjeksiyonu (ARCH6139)
Anahtar ruby.security.file-inclusion-injection · Önem critical · Kategori security · CWE CWE-98
Kullanıcı kontrolündeki bir yolu require/load ile dahil etmek, saldırganların rastgele dosyaları yüklemesine ve kod çalıştırmasına olanak tanır. Dahil edilen modülleri beyaz listeyle sınırlayın.
Hatalı
Bölüm başlığı “Hatalı”def load_plugin(name) require "#{Rails.root}/plugins/#{params[:name]}"endPLUGINS = { "csv" => "plugins/csv", "pdf" => "plugins/pdf" }.freeze
def load_plugin(name) path = PLUGINS.fetch(name) { raise ArgumentError, "unknown plugin" } require Rails.root.join(path).to_sendDüzeltme
Bölüm başlığı “Düzeltme”Dahil etme yollarını dinamik olarak oluşturmayın; sabit bir beyaz listeden çözümleyin.