У нас действительно есть политика для стороннего доступа сервера. Мы запрещаем его, если они не владеют аппаратными средствами, и у нас есть изолированный к его собственному сегменту сети. Политика на самом деле читает:
"Никакое третье лицо не должно получать доступ ни к каким ресурсам сервера, находящимся в собственности [компании] без представителя IT упрощение соединения".
Процедура немного более сложна. Мы обычно настраиваем удаленную сессию (Webex) и передаем управление так, чтобы они могли получить доступ к системе, и штат IT может контролировать по мере необходимости. Слишком трудно даже следить за тем, что сделал штат IT, когда проблемы возникают, чтобы позволить внешнему поставщику вмешиваться в системы без 1:1 контроль. Это также дает нашей команде способность подвергнуть сомнению любые причудливые компромиссы, которые третьи стороны делают, чтобы установить дополнительные приложения, отключить AV или контроль, или хуже.
Закруглите это с растяжкой или инструментом управления конфигурацией как Аудитор Ecora (что мы используем для Уровня 1 систему), и необходимо быть в очень хорошей форме. Это дает нам периодический файл дельты того, что изменилось через огромное поперечное сечение конфигураций на серверах.
С тех пор imgcpu [.php] может быть изменен, вот мой ответ для чистки этого даже при том, что это собирается отменить большую ту работу, которую Вы сделали
В рамках программы можно циклично выполниться по всем возможным атрибутам и извлечь, какой бы ни присутствуют (в любом порядке!). Можно заменить все те правила с единственным правилом:
RewriteRule ^IMG-(.*)$ imgcpu\?parse=$1 [L]
и затем в imgcpu сценарии, у Вас был бы "синтаксический анализ" как переменное, содержащее folder1/some_funny_kitty_w3500_h10_cp_q90.jpg
. Удалите расширение из конца, имени папки и имени файла с начала, и затем можно циклично выполниться через различные параметры и извлечь их из строки. Что-то как (PHP, но понятие может быть сделан на любом языке. Вы могли бы даже сохранить некоторых мс путем выполнения его без regexes):
$values["q"]=50; // Set some defaults?
foreach (array("h","w","q","c","f") as $param) {
if (preg_match("/_${param}([^_]+)/",$_REQUEST["parse"],$result)) {
$values[$param]=$result[1];
}
}
В конце $values["h"]
имел бы высоту. Это было бы тонной, легче поддержать, если Вы когда-нибудь хотите добавить новые параметры. Вам было бы нужно немного работы для выяснения то, что Вы, как предполагается, делаете с "my_w2000_desktop_w200_h100.jpg" (или хуже: "my_w2000_desktop_h100.jpg" или еще худший "desktop_for_w2000_h100.jpg"), но если Вы запрещаете людям иметь двойные подчеркивания в именах файлов, Вы могли бы использовать двойные подчеркивания для разделения имени файла от опций (например, "my_w2000_desktop__h100.jpg") и разделять строку там (обратите внимание, что regexes выше требуют, чтобы каждая опция запустилась с _ символ),
Более легкая опция
Если можно принять не кодирование параметров в самом имени файла (это могло бы привести ко всем имеющим изображения совершенно других размеров все названные "some_funny_kitty.jpg"), затем парсинг может быть сделан тривиальным. Это использовало бы URL как http://example.com/IMG/w200/h100/folder1/my_w2000_desktop.jpg
. Удалите "-" из RewriteRule (просто ^IMG(.*)$
, и измените парсинг в PHP:
$parts=explode("/",$_REQUEST["parse"]);
$filename=array_pop($parts);
$folder=array_pop($parts);
foreach ($parts as $field) {
$param=substr($field,0,1);
$setting=substr($field,1); // assuming settings are always one letter followed by value
$values[$param]=$setting;
}
Если это приемлемо, Вы можете устранять mod_rewrite полностью: Используйте URL формы
http://example.com/imgcpu/w200/h100/folder1/my_w2000_desktop.jpg
и Apache выполнится imgcpu
с PATH_INFO
набор переменной среды к /w200/h100/folder1/my_w2000_desktop.jpg
($_SERVER["PATH_INFO"]
в PHP). Это хорошо работает для меня, но я видел, что некоторые сообщения жалуются, что в определенных средах PATH_INFO повреждается.