Bunu şu şekilde önizlemek istiyorum: Herhangi bir kullanıcı girdisi tehlikeli olarak değerlendirilmelidir. Kullanıcı tarafından sağlanan girdileri kullanarak herhangi bir komutu çalıştırmanızı önermem.
Yapmak istediğiniz ilk şey girişi mümkün olduğunca kilitlemek. Arabellek taşması ve DoS saldırılarını önlemek için user_input_vars_from_json
uzunluğunu kısıtlamayı düşünün. Ayrıca, istenmeyen anahtarları/değerleri filtrelemek için user_input_vars_from_json
JSON'da ayarlamaya çalıştığınız "vars" ı hem doğrulamak hem de kısıtlamak için bir yol bulmaya çalışmanızı öneririz.
require 'shellwords'
system("grunt", "custom-job", "--src=files", '--dest="file"', "--vars=\"#{Shellwords.escape(user_input_vars_from_json)}\""
: Giriş temizlendikten sonra
, işinden komutu yürüterek mümkün olduğunca güvenli olarak yaklaşmak için Shellwords birlikte Kernel#system kullanabilirsiniz