2012-05-30 2 views
2

B :: Lint не любит while (<>) {do stuff}, docs показывает неприятную инъекционную атаку из-за внутреннего использования открытого аргумента 2-го аргумента. Есть ли простой способ сделать это использование более безопасным? У меня много мелких скриптов, которые используют это.Безопасное использование магического алмаза Perl

+0

Сценарии на сервере, обращенном к веб-интерфейсу, или NAT и защищенная от брандмауэра панель? – starbolin

+0

Последний. Но мне нравится предполагать опасную среду. –

+0

Тогда это зависит от использования скрипта и от того, у кого есть доступ к нему. Если у пользователя есть доступ к/bin, у него есть гораздо более мощные инструменты, чтобы укоренить ваш ящик. – starbolin

ответ

5

Вы можете использовать ARGV::readonly. Это позволит более безопасно использовать алмазный оператор.

ARGV :: только для чтения - сделать <> открытые файлы, независимо от ведущих/замыкающие пробелы и/или управляющие символы, такие как |,>, драм <.

+0

Отлично, именно то, что я искал. Благодаря! –

+0

@BillRuppert Добро пожаловать. – TLP

1

Волшебный бриллиант для вашего удобства. Getc(), read(), readline() и sysread() доступны, и каждый из них предлагает различные преимущества безопасности и удобства.

Смежные вопросы