كيف يمكنني تعيين وضع taint في برنامج نصي بيرل مع '#!/usr/bin/env perl'- shebang؟
سؤال
كيف يمكنني تعيين وضع taint في برنامج نصي بيرل مع أ
#!/usr/bin/env perl
كوخ؟
المحلول
يمكنك تمرير متغير بيئة Perl5opt على خط Shebang:
#!/usr/bin/env PERL5OPT=-T perl
هذا يبدو كل شيء إلى حد ما بالنسبة لي.
خيار آخر ، هو إعادة تنفيذ البرنامج النصي ضمن وضع taint إذا اكتشفت أنه ليس على:
#!/usr/bin/env perl
warn 'Taint mode is '.(${^TAINT} ? 'on' : 'off'); # For debugging
exec($^X,'-T',$0,@ARGV) unless ${^TAINT};
# do stuff under taint mode here
من الواضح أن هذا هو أداء كبير في أداء بدء التشغيل.
نصائح أخرى
نظرًا لأنه لا يمكن تمكين وضع taint إلا عبر -T
العلم ، و env
لن تقبل أي أعلام في خط Shebang ، الخيار الأفضل لك هو تشغيل البرنامج عبر perl -T script.pl
بدلا من تنفيذ البرنامج النصي مباشرة.
إذا كنت بحاجة تمامًا إلى فرض وضع taint في Shebang ، فيمكنك عمل ملف taintperl
البرنامج النصي في مكان ما في طريقك (على سبيل المثال/usr/local/bin) مع المحتويات التالية:
#!/bin/sh
/usr/bin/env perl -T
ثم في برنامج Perl الخاص بك ، لديك
#!/usr/bin/env taintperl
لا تنتمي إلى StackOverflow