Плохое проектирование в Web
Хотя в истории развития Internet имеются многочисленные примеры разрушительных атак на Web-серверы, которые позволяют взломщикам получать важную информацию об устройстве сервера, а зачастую и привилегированные права доступа, эти взломы – только вершина айсберга. Многие разработчики не стремятся изучить жизненно важные методы проектирования, которые могли бы ограничить нежелательное использование их Web-серверов. В развитие многих из методов, обсуждаемых в этой главе, внесли вклад многие люди, в том числе Симпл Номад (Simple Nomad) из центра NMRC и компания Perfecto Inc.
Использование скрытых дескрипторов
В настоящее время многие компании пользуются Internet, предлагая свои продукты и услуги любому, у кого есть Web-браузер. Но "плохо запрограммированная" тележка для покупок может позволить взломщику фальсифицировать стоимость товаров. Например, рассмотрим небольшую компанию, занимающуюся продажей аппаратного обеспечения. Эта компания обзавелась собственным Web-сервером, чтобы ее клиенты могли осуществлять покупки в интерактивном режиме. Однако они допустили в программе важный промах: применили скрытые дескрипторы HTML как единственный механизм назначения цены за определенный товар. В результате, если взломщики обнаружат это уязвимое место, они смогут изменить цену, стоящую в скрытых дескрипторах, по своему усмотрению.
Например, пусть на Web-узле имеется страница продаж со следующим кодом HTML.
<FORM ACTION="http://192.168.51.101/cgi-bin/order.pi" method="post"> <input type=hidden name="price" value="199.99"> <input type=hidden name="prd_id" value="X190"> QUANTITY: <input type=text name=" quant" size=3 maxlength=3 value=l> </FORM>
В этом случае простое изменение цены с помощью Netscape Composer или в любом текстовом редакторе позволит взломщику заплатить за товар $1.99 вместо предполагаемой суммы $199.99:
<input type=hidden name="price" value="l.99">
Если вам кажется, что такой стиль программирования встречается редко, то можете удостовериться в этом самостоятельно. Стоит лишь зайти на узел http://www.altavista.com и осуществить поиск, задав в качестве критерия строку type=hidden name=price. В результате будут получены адреса сотни узлов, обладающих таким изъяном.
Другая форма взлома заключается в использовании значения ширины поля. При проектировании в Web указываются многие размеры, однако взломщик может менять заданные разработчиком значения, указывая размеры порядка 70.000 символов. Затем он может ввести в соответствующее поле строку, состоящую из большого числа символов, и это может привести к выходу сервера из строя. Если этого и не произойдет, то подобные действия все же могут привести к непредсказуемым последствиям.
Контрмеры против использования скрытых дескрипторов
Чтобы предотвратить возможность использования взломщиками скрытых дескрипторов HTML, ограничьте их использование в коде, который обеспечивает хранение такой важной информации как цены, или, по крайней мере, реализуйте режим подтверждения этих значений перед их использованием.