Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как проверить и отобразить ссылку? / 8 сообщений из 8, страница 1 из 1
08.02.2015, 23:30
    #38874316
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Пользователь в качестве своих контактных данных ввел ссылку на другой сайт (в специально предназначенное для этого поле формы). Это может быть ссылка на его сайт, на страницу вконтактике и т.п.
Она хранится в базе и отображается при отображении контактной информации пользователя с помощью тэга <a>

Два вопроса:

1) Как провалидировать ссылку при вводе в разумных пределах? (протокол может быть не обязательно только http://)

2) Как безопасно вывести ее потом (рендерю Razor-ом) на страничку

в предположении, что пользователь может быть либо криворуким, либо злоумышленником
...
Рейтинг: 0 / 0
08.02.2015, 23:49
    #38874321
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Shocker.Pro,

Провалидировать:

1) с помощью регулярного выражения
2) с помощью Uri.TryCreate

При выводе внешней ссылки необходимо присовокупить к адресу протокол, если он отсутствует, иначе ссылка будет относительной сайта. Это также можно сделать с помощью объекта Uri.
...
Рейтинг: 0 / 0
08.02.2015, 23:55
    #38874324
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Shocker.ProКак провалидировать ссылку при вводе

На клиенте можно валидировать с помощью скрипта

Код: javascript
1.
2.
3.
4.
5.
function validateURL(textval) {
  var urlregex = new RegExp(
        "^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
  return urlregex.test(textval);
}



Или с помощью https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Validation/
...
Рейтинг: 0 / 0
08.02.2015, 23:56
    #38874325
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Валидация на клиенте не отменяет необходимость повторной валидации на сервере.
...
Рейтинг: 0 / 0
09.02.2015, 00:13
    #38874330
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Ну уж регулярку я могу найти или сварганить.

Ограничивать [0-9A-Za-z] - прошлый век, сейчас полно национальных сайтов и зон
Не говоря уж об ограничениях списком доменов первого уровня, как в некоторых примерах по ссылке, или на наличие www, как в твоем примере, что совсем уже смешно.

Ограничивать протоколами http(s)/ftp - не знаю, логично ли? Существуют же ссылки sopcast, например и т.п., может просто проверять на ".+:\/\/" ?

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

Возможно, рендеринг самого разора обезопасит ее по полной программе и ничего особо предпринимать не требуется? Спрашиваю потому, что я могу просто чего-то не знать.
...
Рейтинг: 0 / 0
09.02.2015, 00:18
    #38874331
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Uri.TryCreate - спасибо
вероятно, этого будет достаточно для моих целей, поковыряю.
...
Рейтинг: 0 / 0
09.02.2015, 02:19
    #38874346
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
Shocker.ProОграничивать [0-9A-Za-z] - прошлый век, сейчас полно национальных сайтов и зон

Ну это образный пример.

Shocker.ProОграничивать протоколами http(s)/ftp - не знаю, логично ли? Существуют же ссылки sopcast, например и т.п., может просто проверять на ".+:\/\/" ?

Логично, я считаю, если ты в поле ввода просишь ссылку на глобальный ресурс, то это http(s)/ftp, остальные слишком специфичные, это зависит от задач. Так-то в URI можно передать и ссылку на локальный файл, только смысл?

Shocker.ProВозможно, рендеринг самого разора обезопасит ее по полной программе и ничего особо предпринимать не требуется? Спрашиваю потому, что я могу просто чего-то не знать.

Не совсем ясно на каком этапе ты хочешь безопасности — на этапе получения/сохранения информации, или на этапе вывода? Превалидация предпочтительнее, так как избавит от возможных ошибок в последствии.
...
Рейтинг: 0 / 0
09.02.2015, 08:48
    #38874416
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить и отобразить ссылку?
hVosttЛогично, я считаю, если ты в поле ввода просишь ссылку на глобальный ресурс, то это http(s)/ftp, остальные слишком специфичные, это зависит от задач. Так-то в URI можно передать и ссылку на локальный файл, только смысл?ну ок, это вопрос организационный

hVosttНе совсем ясно на каком этапе ты хочешь безопасности — на этапе получения/сохранения информации, или на этапе вывода? Превалидация предпочтительнее, так как избавит от возможных ошибок в последствии.больше на этапе вывода, хотя вопрос, конечно, комплексный.

Грубо говоря, string/IHtmlString защищает от того, чтобы в выводимых данных (особенно тех, которые были ранее введены пользователем тем или иным способом) не оказалось что-то типа <script> и т.п. Про это в учебниках упоминают, про ссылки же мне ничего не попадалось, поэтому пытаюсь перестраховаться.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как проверить и отобразить ссылку? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]