Jawa / Говнокод #3802 Ссылка на оригинал

0

  1. 1
s.replaceAll("(\\/\\.\\.\\/)+", "/").replaceFirst("^((\\.)+\\/)+", "");

вот такие вот суровые паттерны
как я это увидел - мне сразу вид двух друзей переханных трактором вспомнился

String s="../../../a./../../files/file1.rar"; // надо убрать строки вида "../"

Запостил: 3.14159265 3.14159265, (Updated )

Комментарии (10) RSS

    • ну во-первых я в таких случаях пишу
      private static final Pattern p=Pattern.compile(....);//скорость выше
      а во-вторых оно еще и работает неправильно )))
      Ответить
  • убрать строки вида - ага, и путь будет неправильным. Лучше уж как-то по другому... Если надо что бы запрошенный файл был только в определенном пути - лучше узнать real_path и проверить его начало. Или как?
    Ответить
    • >>>убрать строки вида - ага, и путь будет неправильным.
      чего-то я не понял вашего поста :-\
      надо поудалять все эти двоеточия - это задача, стоящая перед кодом. c чего вы взяли что он неправильный.
      код обращается по http к странице, страница написана говено, потому выдает такой линк - нам надо убрать это, чтобы получить нормальный:
      http://ip:port/files/file1.rar

      >>>Лучше уж как-то по другому...
      всмысле???

      >>>Если надо что бы запрошенный файл был только в определенном пути
      смысла этого предложения я так и не понял
      Ответить
      • я привел пример кривого использования говнорегулярки, которое еще и работает неправильно, между прочим тут можно поступить проще и нагляднее, не используя длинных регулярок...
        Ответить
        • файл ../../../a./../../files/file1.rar не тот же, что a./files/file1.rar

          а если нам нужно, что бы, скажем, запрошенный files/file1.rar был именно в, допустим /tmp/uploads, то делаем real_path("../../../a./../../files/file1.rar"), что превращается в (если правильно) "/tmp/uploads/files/file1.rar" и проверяем, что бы эта строка начиналась с "/tmp/uploads/"
          если же мы пытаемся залезть куда не надо (например, точками добрались до корня, "/files/file1.rar"), то эта строка не начинается с "/tmp/uploads/"
          Ответить
          • согласен, я выше немного неточно написал

            а вообще это говно уже переписано с использованием splita, isEquals("..") и счетчика )))
            Ответить
    • Представь себе и без высокоуровневых языков делается.
      Только наебаться придется вдоволь.
      Ответить
  • ../../../a./../../files/file1.rar
    и
    ../../../../files/file1.rar
    одно и тоже
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8