İçeriğe geç

Dinamik Metot Çağrısı (ARCH6132)

Anahtar ruby.security.dynamic-method-dispatch · Önem warning · Kategori security · CWE CWE-470

Metot adı kullanıcı girdisinden gelen send/public_send çağrıları, hedeflenmeyen metotların çalıştırılmasına olanak tanır. Çağrılabilir metotları bir beyaz listeye sınırlayın.

def run(record)
record.send(params[:action])
end
ALLOWED = %w[publish archive].freeze
def run(record)
action = params[:action]
raise ArgumentError unless ALLOWED.include?(action)
record.public_send(action)
end

Metot adlarını bir beyaz listeye göre doğrulayın ve public_send kullanın.