كيف يمكنني تعيين وضع taint في برنامج نصي بيرل مع '#!/usr/bin/env perl'- shebang؟

StackOverflow https://stackoverflow.com/questions/2528959

  •  22-09-2019
  •  | 
  •  

سؤال

كيف يمكنني تعيين وضع 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top