On Wed, Dec 30, 2015 at 06:06:35PM +0600, Anatoly Y wrote: > какие инсталяции? CGI.pm ? который выпилили из коре. О котом Sawyer ещё > года два или три назад говорил очень звучно на конфе ) > Или про то, что он утверждает будто разработчики хэши считают безопасными, > а скаляры нет. Ну что за бред?) > Он просто клоун)
В защиту CGI.pm можно только сказать, что, на самом деле, всё давно задокументировано. В 1999 году вышел CGI 2.47, в котором появился метод upload специально для того, чтобы гарантировано получить файловый дескриптор. И в документации было сказано: > However, there are problems with the dual nature of the upload fields. > If you use strict, then Perl will complain when you try to use a string > as a filehandle. You can get around this by placing the file reading > code in a block containing the no strict pragma. More seriously, it is > possible for the remote user to type garbage into the upload field, in > which case what you get from param() is not a filehandle at all, but a > string. > To be safe, use the upload() function (new in version 2.47). When called > with the name of an upload field, upload() returns a filehandle, or undef > if the parameter is not a valid filehandle. Т.е. людям явно сказали не использовать param для чтения файлов в 1999 и предупредили о его двойственности и побочных эффектах. В 2009 явно выделили этот пункт, что param это древний способ для работы с файлами: https://metacpan.org/pod/release/LDS/CGI.pm-3.48/lib/CGI.pm#Older-ways-to-process-file-uploads Можно было убрать возможность для param возвращать дескриптор, но это бы ударило по обратной совместимости, которую разработчики вынужденны поддерживать. В докладе упоминается upload - но только для проверки, что отправляется файл. В <> запихивается уже результат param. -- Vladimir Lettiev aka crux ✉ [email protected] -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
