Во-первых, я попытаюсь вас немного утешить, указав, что быть параноиком — это хорошо. Так же, как хорошо быть немного напуганным за рулем, хорошо бояться пользовательского ввода. Предполагайте самое худшее, насколько это возможно, и вы не будете разочарованы.
Во-вторых, программируйте оборонительно. Предположим, что любая ваша связь с внешним миром полностью скомпрометирована. Берите только те параметры, которыми пользователь должен иметь возможность управлять. Выставляйте только те данные, которые пользователь должен видеть.
Очистите ввод. Дезинфицировать, дезинфицировать, дезинфицировать. Если это входные данные, которые будут отображаться на сайте (псевдонимы для таблицы лидеров, сообщения на форуме и т. д.), обработайте их надлежащим образом. Если это входные данные, которые могут быть отправлены в SQL, их тоже следует очистить. На самом деле, даже не пишите SQL напрямую, используйте какого-нибудь посредника.
На самом деле есть только одна вещь, от которой вы не можете защититься, если используете HTTP. Если вы используете файл cookie для идентификации чьей-либо личности, вы ничего не можете сделать, чтобы помешать кому-то другому в кофейне перехватить файл cookie другого человека в этой кофейне, если они оба используют одно и то же беспроводное соединение. Пока они не используют безопасное соединение, ничто не может спасти вас от этого. Даже Gmail не застрахован от этой атаки. Единственное, что вы можете сделать, это убедиться, что куки авторизации не могут храниться вечно, и подумайте о том, чтобы заставить их повторно войти в систему, прежде чем они сделают что-то важное, например, сменят пароль или что-то купят.
Но не парься. О многих деталях безопасности заботится любая система, на основе которой вы строите (вы строите поверх ЧЕГО-ТО, не так ли? Spring MVC? Rails? Struts?). Это действительно не так сложно. Если на кону большие деньги, вы можете заплатить компании, занимающейся аудитом безопасности, чтобы попытаться их взломать. Если нет, просто постарайтесь придумать все разумное и исправить дыры, когда они будут обнаружены.
Но не переставайте быть параноиком. Они всегда хотят тебя достать. Это просто часть популярности.
P.S. Еще один намек. Если у вас есть такой javascript:
if( document.forms["myForm"]["payment"].value < 0 ) {
alert("You must enter a positive number!");
return false;
}
Тогда у вас наверняка будет код в бэкэнде, который идет:
verify( input.payment >= 0 )
person
Brandon Yarbrough
schedule
20.12.2009