Какие символы небезопасны в строках запроса?

Используйте флексбокс для колонок и установите высоту для ul - см. Демонстрацию ниже:

ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  width: 100%;
  max-width: 150px;
  height: 8em;
}

li {
  margin: 5px;
}
  • Item1
  • Item2
  • Item3
  • Item4
  • Item5
  • Item6
  • Item7
  • Item8
[116 ]

Или вы можете использовать CSS-столбцы - см. Демонстрацию ниже:

ul {
  list-style: none;
  columns: 2; /* added this */
  width: 100%;
  max-width: 150px;
  height: 8em;
}

li {
  margin: 5px;
}
  • Item1
  • Item2
  • Item3
  • Item4
  • Item5
  • Item6
  • Item7
  • Item8
[1117 ]

7
задан Seibar 7 April 2009 в 17:28
поделиться

4 ответа

В зависимости от того, какую технологию Вы используете, обычно существует встроенная функция, которая обработает это для Вас.

ASP.NET (VB) и Классик ASP

myUrl = Server.UrlEncode(myUrl)

ASP.NET (C#)

myUrl = Server.UrlEncode(myUrl);

PHP

$myUrl = urlencode($myurl);

Если бы просто требуется удалить небезопасные символы, Вам было бы нужно регулярное выражение. RFC 1738 определяет, какие символы небезопасны для URL:

Небезопасный:

Символы могут быть небезопасными по ряду причин. Пространство
символ небезопасен, потому что значительные пробелы могут исчезнуть и
незначительные пробелы могут быть представлены, когда URL записываются или
набранный или подвергнутый обработке программ обработки текстов. Символы" <" и">" небезопасны, потому что они используются в качестве
разделители вокруг URL в произвольном тексте; метка кавычки (""") привыкла к
разграничьте URL в некоторых системах. Символ "#" небезопасен и если
всегда кодируйтесь, потому что это используется во Всемирной паутине и в другом
системы для разграничивания URL от идентификатора фрагмента/привязки, который мог бы следовать за ним. Символьный "%" небезопасен, потому что это используется для
кодировка других символов. Другие символы небезопасны потому что
шлюзы и другие транспортные агенты, как известно, иногда изменяют такие символы. Эти символы "{", "}", "|", "\", "^ ", "~ "," [", "]", и" '".

7
ответ дан 7 December 2019 в 01:26
поделиться

Я должен предотвратить символы та причина уязвимости

Хорошо, конечно, Вам нужно к URL - кодируют, как было сказано в ответах. Но разве кодирование URL не вызывает уязвимости? Хорошо обычно не непосредственно; главным образом это просто подает Вашу заявку повредиться, когда непредвиденные символы вводятся.

Если мы говорим о веб-'уязвимостях', наиболее распространенные сегодня:

  1. Инжекция серверного кода, ставя под угрозу Ваш сервер
  2. Внедрение SQL, ставя под угрозу Вашу базу данных
  3. Инжекция HTML, позволяя сценарии перекрестного сайта (XSS) нападает против Ваших пользователей
  4. Непроверенные действия, позволяя перекрестный сайт запрашивают подделку (XSRF) нападения на Ваших пользователей

Это в порядке уменьшающейся серьезности и увеличивающейся заурядности. (К счастью немного авторов веб-сайта достаточно глупы передать ввод данных пользователем системе () в эти дни, но XSS и уязвимости XSRF распространены.)

Каждая из этих уязвимостей требует, чтобы Вы поняли базовую проблему и справились с нею сознательно. Нет никакого волшебного списка “строк, которые необходимо заблокировать”, который защитит приложение, если оно будет играть наивный о безопасности. Существуют некоторые дополнения, которые делают вещи как блокирование строки‘ <сценарий>’ при представлении, но все, что они дают Вам, является ложным чувством защищенности, так как они могут только поймать несколько общих падежей и обычно легки кодировать вокруг.

Они также остановят те строки, отправляемые, когда Вы могли бы действительно хотеть их. Например, некоторые (глупые) авторы PHP отказываются от всех входящих апострофов как от попытки обуздать Внедрение SQL; результат - Вы, не может быть назван “O'Reilly”. D'oh. Не блокируйтесь; закодируйте правильно.

Например, для защиты от Внедрения SQL удостоверяются к Escape SQL любые строки, что Вы делаете запросы с (или используйте параметризированные запросы, чтобы сделать это автоматически); для защиты от инжекции HTML HTML - кодирует все текстовые строки, которые Вы производите на страницу (или используйте templating/MVC схему, которая сделает это автоматически).

Мой демонстрационный URL http://localhost/add.aspx?id=4;req=4

Там, как предполагается, что-то не так с тем URL? Это допустимо для разделения двух параметров запроса с a‘’; вместо более общего ‘& ’, но многих общих веб-платформ печально все еще не понимают этот синтаксис по умолчанию (включая Сервлет Java и ASP.NET). Таким образом, необходимо было бы пойти с ‘id=4&req=4’   —  or, если бы Вы действительно хотели, чтобы это было единственным параметром с литеральной точкой с запятой в нем, ‘id=4%3Breq%3D4’.

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

я написал это , для красивых URL-адресов, но это, конечно, не полные

"" ", ´, ', ·,‚, *, @,?, =,;,:,., /, +, &, $, <, >, #,%, {, (,),}, |, \, ^, ~, [,], -, -, - ',, "

а затем я перевожу пробелы" "и повторяющиеся пробелы для" - "

Лучше сделать это или объединить с регулярными выражениями

-2
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

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