Очевидно, веб-сервер должен быть настроен таким образом, дабы не отдавать .pl файлы plaintext'ом, во избежание подобных оказий.
Можно конечно хранить в каком-нибудь нехитро зашифрованном файле, но в любом случае, веб-сервер не должен позволять свободно скачивать н подобные файлы, ни файлы, которые извлекают/получают/работают с паролями, да и вообще код движка.
Очевидно, веб-сервер должен быть настроен таким образом, дабы не отдавать .pl файлы plaintext'ом, во избежание подобных оказий.
Можно конечно хранить в каком-нибудь нехитро зашифрованном файле, но в любом случае, веб-сервер не должен позволять свободно скачивать н подобные файлы, ни файлы, которые извлекают/получают/работают с паролями, да и вообще код движка.
Хостинг работает на nginx. Значит нужно .htaccess ковырять?
Как всё сложно.
У меня 2 вопроса:
как вы планируете использовать свои pl скрипты?
вы пробовали скачать их по прямой ссылке с того места, где они должны лежать?
my $host = "host";
my $pass = 'mypass';
my $user = 'myuser';
my $db = "db";
Подскажите, пожалуйста, есть ли способ сокрытия этих данных?
Да, писать туда хешь. А дальше налету раскодировать и передать в mysql. Или писать свой модуль для авторизации в mysql Или сделать из perl'a - бинарник (http://perlbin.sourceforge.net/perlbin-0.01.html)
подключаюсь к базе
вытаскиваю данные которые нужно отобразить
вывожу шаблон со вставленными в него полученными из базы данными
Скачивать пробовал, работает.
Я правильно понимаю, что index.pl отдаёт по ссылке не код index.pl, а результат работы кода, а упомянутый выше perl.pl , в котором лежат все эти переменные, и который находится в той же директории, что и index.pl, по прямой ссылке отдаёт именно код, а не результат его работы?
#!/usr/bin/perl -w
use 5.010;
use locale;
use strict;
use warnings;
use diagnostics;
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use CGI::WebOut;
use DBI;
my $host = "db.host"; my $pass = 'pass';
my $user = 'user'; my $db = "db";
my $dbh = DBI->connect( "dbi:mysql:$db:$host", "$user", "$pass" );
$dbh->do("SET NAMES 'utf8'");
my $sth = $dbh->prepare( "select text from item where name=$category" );
$sth->execute();
my @array = $sth->fetchrow_array();
И дальше вывожу шаблон кода HTML с данными из базы;
Это не паранойя. Это полное непонимание принципов работы вашего рабочего окружения.
веб-сервер не будет давать вам скачать исходный код, он будет исполнять его. Если это известный ему, заранее определённый тип кода, разумеется. .c файлы он, вероятнее всего, будет отдавать plain-text'ом.