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.
Hatalı
Bölüm başlığı “Hatalı”def run(record) record.send(params[:action])endALLOWED = %w[publish archive].freeze
def run(record) action = params[:action] raise ArgumentError unless ALLOWED.include?(action)
record.public_send(action)endDüzeltme
Bölüm başlığı “Düzeltme”Metot adlarını bir beyaz listeye göre doğrulayın ve public_send kullanın.