URL переписывает для создания сгенерированного thumnails кэша как помехи, вопрос о синтаксисе

У нас действительно есть политика для стороннего доступа сервера. Мы запрещаем его, если они не владеют аппаратными средствами, и у нас есть изолированный к его собственному сегменту сети. Политика на самом деле читает:

"Никакое третье лицо не должно получать доступ ни к каким ресурсам сервера, находящимся в собственности [компании] без представителя IT упрощение соединения".

Процедура немного более сложна. Мы обычно настраиваем удаленную сессию (Webex) и передаем управление так, чтобы они могли получить доступ к системе, и штат IT может контролировать по мере необходимости. Слишком трудно даже следить за тем, что сделал штат IT, когда проблемы возникают, чтобы позволить внешнему поставщику вмешиваться в системы без 1:1 контроль. Это также дает нашей команде способность подвергнуть сомнению любые причудливые компромиссы, которые третьи стороны делают, чтобы установить дополнительные приложения, отключить AV или контроль, или хуже.

Закруглите это с растяжкой или инструментом управления конфигурацией как Аудитор Ecora (что мы используем для Уровня 1 систему), и необходимо быть в очень хорошей форме. Это дает нам периодический файл дельты того, что изменилось через огромное поперечное сечение конфигураций на серверах.

0
задан 13 April 2017 в 15:14
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 повреждается.

1
ответ дан 4 December 2019 в 22:39

Теги

Похожие вопросы