İçeriğe geç

Dinamik Kod Çalıştırma (ARCH6131)

Anahtar ruby.security.dynamic-code-execution · Önem critical · Kategori security · CWE CWE-95

eval, instance_eval veya class_eval ile güvenilmeyen dizeleri kod olarak çalıştırmak, en geniş uzaktan kod çalıştırma vektörüdür. Dinamik kod değerlendirmesinden kaçının.

def compute(expr)
eval(expr)
end
compute(params[:formula])
OPERATIONS = { "sum" => ->(a, b) { a + b }, "max" => ->(a, b) { [a, b].max } }
def compute(name, a, b)
op = OPERATIONS.fetch(name) { raise ArgumentError, "unsupported" }
op.call(a, b)
end

eval ailesini kaldırın; izin verilen işlemleri açık bir eşlemeyle dağıtın.