Почему перенаправление HTML-формы используется в OpenID 2?

matches пытается сопоставить выражение со всей строкой и неявно добавить ^ в начале и $ в конце вашего шаблона, то есть не будет искать подстроку. Следовательно, выход этого кода:

public static void main(String[] args) throws ParseException {
    Pattern p = Pattern.compile("\\d\\d\\d");
    Matcher m = p.matcher("a123b");
    System.out.println(m.find());
    System.out.println(m.matches());

    p = Pattern.compile("^\\d\\d\\d$");
    m = p.matcher("123");
    System.out.println(m.find());
    System.out.println(m.matches());
}

/* output:
true
false
true
true
*/

123 является подстрокой a123b, поэтому метод find() выводит true. matches() только «видит» a123b, который не совпадает с 123 и, следовательно, выводит false.

10
задан andyuk 29 August 2008 в 16:21
поделиться

3 ответа

Основная мотивация была, как Mark Brackett говорит, пределы на размер полезной нагрузки, наложенный при помощи перенаправлений, и ДОБРАТЬСЯ. Некоторые реализации достаточно умны, чтобы только использовать POST, когда сообщение пробегается через определенный размер, поскольку существуют, конечно, недостатки к методу POST. (Руководитель среди них являющийся тем, что Ваша Кнопка "Назад" не работает.) Другие реализации, как пример кода, который Вы процитировали, идут для простоты и непротиворечивости и не учитывают то условное выражение.

6
ответ дан 3 December 2019 в 21:24
поделиться

Я могу думать о нескольких причинах:

  • Капелька безопасности с помощью мрака - это - немного больше работы для подделки в представления POST, чем ДОБИРАЮТСЯ
  • Кэширование и повторно утверждает, что правила более строги для POST, чем ДОБИРАЮТСЯ. Я не совсем уверен, что это имело бы значение для варианта использования OpenID, все же.
  • Боты не следовали бы за формой POST, но будут следовать за перенаправлением. Это могло повлиять на загрузку сервера.
  • Различные браузеры имеют различные макс. длины для, ПОЛУЧАЮТ запросы - но ни один из них не является столь же большим как POST.
  • Некоторые браузеры предупредят о перенаправлении к другому домену. Они также предупредят, если Вы отправите сообщение к URL неHTTPS.
  • Путем выключения JavaScript я могу иметь относительно безопасный опыт и не быть тихо перенаправлен к другому домену.

Я не знаю, что любой из них является причиной гарантированного успеха выбрать POST - если отправляемый объем данных не превышает querystring длину для некоторого главного браузера.

7
ответ дан 3 December 2019 в 21:24
поделиться

Тот же подход используется для веб-браузера SAML профиль SSO. Основные мотивации использования перенаправления Сообщения HTML:

  • Фактически неограниченная длина полезной нагрузки: в SAML полезная нагрузка является XML-документом, подписанным с XMLDSig и закодированным base64. Это больше, чем обычные 1 024 ограничения символов URL (лучшая практика для поддержки не только любых браузеров, но и посреднических сетевых устройств как Брандмауэр, Обратный Прокси, Подсистема балансировки нагрузки также).

  • W3C в стандарте HTTP говорится это, ДОБИРАЕТСЯ, идемпотент (тот же URL выполняется, многократно должен всегда приводить к тому же ответу), и следовательно может кэшироваться по пути, в то время как POST не и должен достигнуть цели URL. Ответ HTML-ФОРМЫ OpenID POST или HTML-ФОРМА SAML POST не должен кэшироваться. Это должно достигнуть цели для инициирования аутентифицируемой сессии.

Вы могли утверждать, что использование HTTP ДОБИРАЕТСЯ, перенаправление работало бы также начиная с запроса URL всегда изменяются, и Вы были бы правы, практика. Однако это было бы обходным решением стандарта W3C, и поэтому, не должно быть стандартом, но альтернативной реализацией каждый раз, когда оба конца соглашаются с ним.

4
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

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