Безопасность, о которой все так много говорят…
Почему никогда нельзя доверять пользователю, если Вас беспокоит безопасность
Специалисты по безопасности, пожалуй, всем уже проели плешь, говоря о том, что все данные, приходящие от пользователя, нужно тщательно проверять… Казалось бы, "азбучные истины", этому должны учить в школе . Мне стало интересно: а многие ли сайты действительно защищены? Внимание: материал предоставлен только в ознакомительных/образовательных целях! Автор не несёт ответственности за всё, что может случиться. [...]
← Вернуться к полной версии записи «Безопасность, о которой все так много говорят…»…
Вложения:
Автор: Vladimir; опубликовано в: Безопасность; метки: mime-type, SQL-инъекция, атака, безопасность, спуфинг, уязвимостьМар
2008
Комментарии к статье «Безопасность, о которой все так много говорят…» (12) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Безопасность, о которой все так много говорят…»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Понадобился маленький магазинчик. Бесплатный и с минимумом функционала. Ни мадженто, ни ос-коммерс совершенно не подходят.
Малюток нашёл штуки три, из них один работал на файлах и все три в 1251.
Остановился на ShopScript free edition от WebAsyst. Полез в код и код практически сразу удручающее впечатление произвёл. А потом я добрался до формирования заказа.
if (isset($_SESSION["gids"]) && $c) {
db_query(«insert into «.ORDERS_TABLE.» (order_time, cust_firstname, и так далее) values (‘».get_current_time().»‘,’».$_POST["first_name"].»‘,’».$_POST["last_name"].»‘,’».$_POST["email"].»‘,’»и так далее»‘);») or die (db_error());
…
$q = db_query(«SELECT name, Price, product_code FROM «.PRODUCTS_TABLE.» WHERE productID=’».$_SESSION["gids"][$i].»‘») or die (db_error()); }
Нигде предварительно массивы POST и GET не обрабатываются и не проверяются, если не считать километровых if(is_set())
Как, например, в индексе это сделано:
if (isset($_GET["register"]) || isset($_POST["register"]))
$register = isset($_GET["register"]) ? $_GET["register"] : $_POST["register"];
И так с полдюжины переменных.
На форуме мне подсказали, что в про и премиум аналогичные дыры.
[...] [...]