Добавьте uniq_by
метод для Выстраивания в проекте. Это работает по аналогии с sort_by
. Так uniq_by
к uniq
, как sort_by
к sort
. Использование:
uniq_array = my_array.uniq_by {|obj| obj.id}
реализация:
class Array
def uniq_by(&blk)
transforms = []
self.select do |el|
should_keep = !transforms.include?(t=blk[el])
transforms << t
should_keep
end
end
end
Примечание, что это возвращает новый массив вместо того, чтобы изменить Ваш текущий на месте. Мы не записали uniq_by!
метод, но должно быть достаточно легко, если бы Вы хотели.
РЕДАКТИРОВАНИЕ: Tribalvibes указывает, что та реализация является O (n^2). Лучше было бы что-то как (непротестированный)...
class Array
def uniq_by(&blk)
transforms = {}
select do |el|
t = blk[el]
should_keep = !transforms[t]
transforms[t] = true
should_keep
end
end
end
Это можно использовать следующим образом.
Думаю, ваш аргумент состоит в том, что никто не запускает FTP-сервер на том же хосте, что и HTTP-сервер. Вы правы, если это предположение верно. Его нельзя использовать, если вы точно знаете, что у вас нет других открытых портов.
Чтобы использовать эту дыру в IE, на хосте должны быть запущены другие службы, а номера портов должны быть нестандартными. Это действительно редкость. Многие сайты имеют FTP на одном хосте, но обычно используют стандартный номер порта (21). Однако это может случиться. Моя хостинговая компания использует FTP-сервер на нескольких портах (один должен быть нестандартным) на том же хосте, где обслуживается моя веб-страница, и это альтернативный способ обновления страниц, если инструмент разработки не поддерживает WebDAV.
Вот и все.
Итак нет, вам не нужна другая уязвимость , FTP-сервер или аналогичный сервер с общедоступным портом достаточно, чтобы быть уязвимым.
Вот и все.
Итак нет, вам не нужна другая уязвимость , FTP-сервер или аналогичный сервер с общедоступным портом достаточно, чтобы быть уязвимым.
Вот и все.
Итак нет, вам не нужна другая уязвимость , FTP-сервер или аналогичный сервер с общедоступным портом достаточно, чтобы быть уязвимым.