Perl: Премахване на текущата директория от пътя за зареждане на модулите (премахване на '.' от @INC)Състояние към декември 2020: Всички наши сървъри са преминали на Debian Buster. Ако е необходимо текущата директория да бъде в пътя за зареждане на модули, трябва да използвате Метод 2 описан по-долу. --- Дата: 15 февруари 2019 г. Тази статия обяснява предстояща промяна в конфигурацията на Perl. Тази промяна може да засегне скриптове, които зареждат модули от текущата работна директория (cwd). ВъведениеОще през 2016 година разработчиците на Debian обявиха, че постепенно ще започнат премахването на текущата директория (cwd / .) от пътя за зареждане на модули (@INC), тъй като това е потенциално опасно, и може да позволи изпълнението на зловреден код при определени обстоятелства. Повече информация може да бъде намерена в мейлинг листата на Debian тук. Текуща конфигурацияНашите сървъри все още са конфигурирани по начин, по който предишното поведение е запазено - работната директория е все още включена в пътя за зареждане на модули на последна позиция с най-нисък приоритет. Бъдещата промянаПри следващата главна версия на Debian опцията да оставим '.' в масива @INC в сървърната конфигурация няма да бъде налична. Това означава, че единственият начин да запазите текущото поведение ще бъде да направите настройката в потребителските скриптове. Затова предупреждаваме нашите потребители ползващи Perl, за да могат да се уверят, че техните скриптове не разчитат на включването на текущата директория в пътя за зареждане на модули. Премахване на '.' от @INC сегаАко искате да елиминирате възможната заплаха за сигурността сега, премахвайки '.' от @INC, можете да използвате един от следните два метода: Метод 1: Създайте в папка "private" на вашия хостинг акаунт празен файл с име PERL_DISABLE_UNSAFE_INC (/home/$your_CP_username/private/PERL_DISABLE_UNSAFE_INC) С добавянето на този файл можете да тествате дали Вашите скриптове всъщност зареждат модули от текущата директория, и дали работят правилно, когато текущата директория е премахната от @INC, още преди промяната да бъде направена глобално. С тази настройка се спира зареждането на модули от текущата директория за всички Perl скриптове на вашия акаунт. Метод 2: Използвайте следния код в началото на Вашите Perl скриптове: Настройване на '.' като първи източник за зарежданеАко искате да зареждате модули с приоритет от текущата директория, можете да използвате следния код в началото на скриптовете си: Запазване на текущото поведениеАко искате да запазите текущото поведение след промените трябва да използвате следния код във Вашите Perl скриптове: Метод 1: Създайте в папка "private" на вашия хостинг акаунт празен файл с име PERL_USE_UNSAFE_INC (/home/$your_CP_username/private/PERL_USE_UNSAFE_INC) С добавянето на този файл, модулите от текущата директория ще бъдат зареждане с най-нисък приоритет, за всички Perl скриптове на вашия акаунт. Метод 2: Използвайте следния код в началото на Вашите Perl скриптове:BEGIN { push @INC, '.' }Този код ще направи същата настройка само за съответния скрипт. ВАЖНО: Използването на PERL_USE_UNSAFE_INC ще е възможно единствено до преминаването към Debian 10. Краен срокВъпреки, че не можем да дадем точен краен срок, тъй като не можем да кажем с точност кога ще излезе следващата главна версия на Debian, съветваме нашите клиенти да обърнат внимание на този въпрос незабавно. През февруари 2019, планираме да променим поведението на Perl, така че да НЕ СЕ зареждат модули от текущата директория по подразбиране. Ако вашите скриптове не са съвместими и не можете да ги направите такива преди февруари 2019, можете да използвате PERL_USE_UNSAFE_INC настройката, която ще ви даде още малко време - до преминаването към Debian 10. |