как реализовать если в javascript? - PullRequest
0 голосов
/ 27 октября 2011

JavaScript ниже извлекает www.google.com из http://mysite.com?url=www.google.com и записывает его как <a> href ссылку

<script> 
var urll = (window.location.search.match(/[?&;]url=([^&;]+)/) || [])[1]; 
document.write('<a href="http://'+urll+'">url</a>'); 
</script>

Проблема в том, что при извлечении URL-адреса <a>href значение становится http://mysite.com/www.google.com, поэтому if должно указать, если исходный URL http://mysite.com?url=www.google.com не имеет http:// перед ?url=, затем добавить его после значения href, чтобы сформировать <a href="http://www.google.com">url</a>

В комментарии к предыдущему вопросу кто-то дал мне это

if (link.substr(0, 7) !== 'http://') { link = 'http://' + link; }

, но я действительно понятия не имею, как его реализовать, потому что я никогда не использовал if в javascript.

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Помимо всего прочего вы подвергаете себя риску XSS-атак :

Предположим на мгновение, что параметр url (который внешний сайт может легко *)1007 * подделка путем предоставления ссылки на ваш сайт) содержит строку "><b>BOLD!</b><div class=".Внезапно ваша страница отобразит жирный текст, даже если вы никогда не использовали тег <b> на своем сайте.И это самый безобидный пример из возможных, потому что злоумышленник может с равным успехом ввести произвольный JavaScript-код на вашу страницу (включая JS, который крадет куки пользователя!)доверяйте пользовательскому вводу, а не просто конвертируйте его в HTML.

Чтобы избежать подобных атак ( SQL-инъекция - очень похожая атака на серверный код, который создает операторы SQL)сделайте эти две вещи:

  1. подтвердите ввод, чтобы убедиться, что это именно то, что вы ожидаете, и не принимайте его, если это не так.В вашем случае это будет означать, что вы захотите убедиться, что параметр url действительно представляет действительный URL.
  2. Использовать пользовательские данные только «безопасными» способами, которые не приводят к возможности ».повторная интерпретация "ввода.В вашем случае это означает, что вы не должны создавать свой HTML с использованием конкатенации строк, подобной этой.Intead используйте document.createElement() для создания элемента a, установите его атрибут href на нужное значение (очищенное, как указано выше), а затем добавьте вновь созданный элемент a в DOM насоответствующая позиция.
2 голосов
/ 27 октября 2011

Похоже, вам нужно https://developer.mozilla.org/en/JavaScript. "if" - это самый базовый элемент любого языка программирования, если вы не понимаете, что вам действительно нужно пройти через кучу основ.

...