У нас есть приложение с высокой степенью защиты и мы хотим разрешить пользователям вводить URL-адреса, которые будут видеть другие пользователи.
Это представляет собой высокий риск взлома XSS - пользователь может потенциально ввести javascript, который выполняет другой пользователь. Поскольку мы храним конфиденциальные данные, важно, чтобы это никогда не происходило.
Каковы наилучшие методы борьбы с этим? Является ли какой-либо безопасный белый список или шаблон эвакуации одним достаточно хорошим?
Любые рекомендации по перенаправлению (сообщение "ссылка выходит за пределы нашего сайта" на странице предупреждения, например, после ссылки)
Есть ли аргумент для того, чтобы вообще не поддерживать ссылки, введенные пользователем?
Разъяснение:
В основном наши пользователи хотят вводить:
stackoverflow.com
И передайте его другому пользователю:
<a href="#" onclick="location.href='http://stackoverflow.com'; return false;">stackoverflow.com</a>
Я действительно беспокоюсь о том, что они используют это в XSS-хаке. То есть они вводят:
оповещения ( 'взломан!');
Таким образом, другие пользователи получают эту ссылку:
<a href="alert('hacked!');">stackoverflow.com</a>
Мой пример - просто объяснить риск - я хорошо знаю, что javascript и URL-адреса - это разные вещи, но, позволяя им вводить последние, они могут выполнить первый.
Вы были бы удивлены, сколько сайтов вы можете сломать с этим трюком - HTML еще хуже. Если они знают, что имеют дело со ссылками, они также знают, что нужно санировать <iframe>
, <img>
и умные ссылки CSS?
Я работаю в условиях высокой безопасности - один взлом XSS может привести к очень высоким потерям для нас. Я рад, что я могу создать Regex (или использовать один из прекрасных предложений до сих пор), который мог бы исключить все, что я мог придумать, но этого было бы достаточно?