Подписанный URL-адрес в качестве меры безопасности


1

Будет ли внедренный URL-адрес безопасным средством защиты от вторжения и отражения URL-адресов, доступ к которым осуществляется через запрос GET.

например. http://www.domain.com/:url_to_resource/:hash http://cdn.domain.com/:url_to_resource.js?:hash

Hash в моем случае будет соответствовать моему ключу кэша для ресурса.

Любые отзывы, улучшения или критические замечания были бы весьма полезными.

1

Если он изменен, исходящий от клиента, тогда нам также понадобится механизм для получения сертификатов клиентов. Чтобы избежать изменений в соединении, поступающем с сервера, SSL уже будет охватывать это и многое другое. Действительно, я не вижу, что это будет предлагать по возможностям SSL, если вы просто не ищете более легкий способ защитить ссылки, не используя полное SSL-соединение.

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

  0

Как это повлияет на ваш ответ: Когда пользователь сначала нажимает на страницу, вы создаете только HTTP, безопасный Cookie HMAC (SessionID, SharedSecret, scrypt (Пароль), истекает). Cookie связан с сеансом таблицы БД (SessionID, данные, HMAC, подпись, истекает). Все данные зашифровываются на клиенте, поэтому сервер никогда не может читать данные. (Правдоподобная отрицательность). 12 авг. 132013-08-12 13:33:22

  0

@ 4e494c - Я не уверен, что следую вашему смыслу или намерению из этого комментария. Сервер «ты»? Если да, то каковы данные и что означает подпись? Недостаточно контекста того, как вы намерены использовать эти ценности для меня, чтобы понять это. 12 авг. 132013-08-12 13:39:33

  0

Правильно, «вы» ссылаетесь на сервер. SharedSecret ссылается на уникальный общий секрет между файлом cookie сервера и пользователя. Подпись сеанса - это в основном просто нормализованное представление хэш-сигнатуры и истекает - это просто дата истечения срока действия в цифровом формате. 12 авг. 132013-08-12 13:49:47

  0

@ 4e494c - хорошо, как это должно быть полезно в случае подписания ссылок и в каком направлении? Я все еще не понимаю, как это будет использоваться в контексте исходной ситуации. 12 авг. 132013-08-12 13:52:39

  0

подпись && || HMAC будет содержать хэш-файл JS. Технологический поток: Пользователь -> Сайт -> Cookie/Session -> Сайт -> JS (с подписанным URL). Признавая путаницу, я пытался многолюбить несколько-много вопросов. 12 авг. 132013-08-12 14:02:06

  0

@ 4e494c - вы просто пытаетесь убедиться, что ссылка, возвращаемая клиентом, такая же, как и предоставленный ей сервер? Если HMAC и подпись как возникают, либо известны на сервере, то что вы пытаетесь выполнить. На данный момент я действительно потерялся. 12 авг. 132013-08-12 14:19:35

  0

Извините, длинный день. Для моего случая использования Im просто ищет способ проверить, что файл javascript, отправленный с сервера, является аутентичным и неизменным при достижении пользователем. С другой стороны, криптография на стороне клиента довольно бесполезна и легко доступна, если я не могу проверить подпись файлов. Хотя мои первоначальные вопросы заключались в том, что подпись URL может использоваться для защиты от выделения URI-эксплойтов, поэтому я попытался обобщить вопрос, чтобы сделать вопрос более полезным для других. , например. /index.php?:hash&file=../../../etc/password 12 авг. 132013-08-12 14:30:32

  0

@ 4e494c - в этом случае достаточно просто проверить подпись на сервере, чтобы проверить JS-файл, но проблема будет позволяя браузеру знать, что он должен ожидать, что файл JS будет подписан. На самом деле это одна и та же основная проблема, что большинство недавних SSL-атак используют сторонние действия, заставляя браузер не ожидать подписанного или зашифрованного контента. Я не вижу никакой реальной выгоды, просто используя SSL для подключения, так как без этого флаг для установки браузера для проверки может быть удален, как это делает SSLStrip. 12 авг. 132013-08-12 15:14:06

  0

будет разрабатывать аддон браузера, который проверяет/проверяет JS-файл на работоспособное решение этой проблемы? 14 авг. 132013-08-14 14:14:56

  0

@Null - если каждый JS-файл в Интернете не подписан, браузер не может знать, когда он впервые посещает сайт, который должен предоставить JS-файл. Каждая попытка установления SSL-соединения сервером может быть удалена и отправлена ​​пользователю как незащищенная страница. 14 авг. 132013-08-14 14:49:47

  0

Я не думаю, что каждый JS понадобится. Он может быть включен, объявив конфигурацию типа CORS на том же сервере и применяя те же политики происхождения. Тогда это может быть связано с концепцией подписанного URL, о которой я спросил выше.SSLStrip - это беспокойство, о котором я много думал. Спасибо за направление. 14 авг. 132013-08-14 15:47:39

  0

@Null - но как вы гарантируете, что эта информация дойдет до клиента. Точкой такой сигнатуры является предотвращение атаки mitm, но mitm может просто не устанавливать конфигурацию. Вы никогда не поговорите с правильным сервером, поэтому ваш браузер никогда не сможет этого ожидать. 14 авг. 132013-08-14 16:21:06


0

Может помочь, если подделка осуществляется в транзите (прокси, MITM), но не поможет, если подделка выполняется на сервере (SQL или PHP-инъекция или замена файлов).

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

Все, что действительно доказывает, что страница - это страница, которую сервер отправил вам, и у нас уже есть HTTPS.

  0

Спасибо Rod, оцените ваш вход. Мой первоначальный проект состоял в том, чтобы обеспечить безопасную передачу JS на стороне клиента из доверенного SERVER через SSL/TLS, это будет относительно статический ресурс, предполагаемый прецедент - криптография на стороне клиента. Видите ли вы какие-либо очевидные ошибки, кроме обычной клиентской криптозащиты, это не безопасно. 12 авг. 132013-08-12 12:38:55

  0

Если вы используете его, чтобы доказать, что URL-адрес не был изменен, вы теряете время, так как https доказывает это. Что вы подразумеваете под криптографией на стороне клиента? Вы говорите об аутентификации? 12 авг. 132013-08-12 12:45:56

  0

С различными атаками на SSL/TLS, представленными на BlackHat 2013, я обеспокоен тем, что SSL/TLS aka HTTPS уже слабее, не обязательно сломано. Таким образом, доказательство HTTPS не является полностью доказательством дурака. например Если сущность должна перехватывать HTTPS-трафик (PRISM), я мог бы теоретически изменить ответ (файл) на уровне сети или даже упростить переназначение CDN-url на поддельный сервер и отправить вредоносные активы. Мой предназначенный прецедент предназначен для обеспечения криптографии inbrowser для шифрования данных сеанса на клиенте с использованием общего ключа и обработки только зашифрованных данных на сервере. 12 авг. 132013-08-12 13:04:19

  0

Если злоумышленник может изменить содержимое страницы, то, безусловно, они могут указать вам на любой актив, который они хотят (и отключить любую проверку на основе javascript, которую вы реализуете) 12 авг. 132013-08-12 13:17:56

  0

@RossDargan Правильно, но если бы я мог использовать эту хешу/подпись, сервер отправленный для проверки этого на достоверность, я мог бы затем отклонить сеанс, обновить страницу, предупредить пользователя и попробовать восстановить. Или я чего-то не хватает? 12 авг. 132013-08-12 13:22:42

  0

Если кто-то злонамерен, вероятность того, что они заставят вас получать данные с другого сервера без проверок.Если бы они хотели получить его со своего сервера, они могли бы совершить атаку MITM, где они заставили вас сделать оттуда сервер, который получает запрос на ваш сервер, чтобы получить действительный хеш, затем они получат эти данные и возвращаются это вам. Если они сломали ssl, у вас есть файлы cookie сеансов, и вы можете имитировать себя. 12 авг. 132013-08-12 13:27:01

  0

@ RossDargan, как это повлияет на ваш ответ. Когда пользователь впервые попадает на страницу, вы создаете только HTTP, безопасный Cookie HMAC (SessionID, SharedSecret, scrypt (Пароль), истекает). Cookie связан с сеансом таблицы БД (SessionID, данные, HMAC, подпись, истекает). Все данные зашифровываются на клиенте, поэтому сервер никогда не может читать данные. Так это бесполезно для злоумышленника? 12 авг. 132013-08-12 13:36:01

  0

Его трудно понять, что вы на самом деле защищаете. Если вы беспокоитесь о том, что ssl сломан, то создание файла cookie http не имеет значения - атака MITM будет выкапывать куки-файл, и я мог бы использовать злоумышленник для дешифрования всей необходимой информации. 12 авг. 132013-08-12 14:09:26

  0

@ RossDargan, я задам свой вопрос, подумав и перефразируя. 12 авг. 132013-08-12 14:15:02