- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
<?php
require_once ("db.php");
$region = $_POST["region"];
$array = mysql_query ("SELECT * FROM city WHERE region = '$region'");
echo "<option value=\"\">Выберете город</option>";
while ($m = mysql_fetch_array($array)){
echo "<option value=\"".$m["alias"]."\" id=\"".$m["id"]."\">".$m["title"]."</option>";
}
Не бойся, мы аккуратно. Всего лишь пара-тройка транзакций добавится...
[:]||||||||[:]
SELECT * FROM tab where region = 'region' DELETE FROM tab WHERE 1=1;
не проканывают))
SELECT * FROM tab where region = 'region'; DELETE FROM tab WHERE 1=1;
P.S. Эксплойты с DELETE FROM и DROP - для малолетних дебилов. Зачем срать там, где можно покушать? :)
Если нужно специально выполнить 2 запроса, то используются транзакции, аля
START TRANSACTION
SELECT ...
SELECT ..
INSERT ..
....
COMMIT;
В такую хрень, и правда можно говна насувать.
Сфига? Это ж безобидная конструкция ;)
> два запроса выполняются, хотя не должны
Ну вроде как отключены были по дефолту, и кидался экцепшон, если попытаться соединить два запроса через ";"... значит я туплю.
> используются транзакции
У тех, кто подставляет данные из запросов без фильтрации и экранировки, они всяко не используются.
Такие операции запрещает safe update mode
>Ну вроде как отключены были по дефолту, и кидался экцепшон, если попытаться соединить два запроса через ";"
Тоже удивился. Может настройки БД. Проверял в дефолтной Maria DB 5.5.
Ну и как ниже написали, дропы/делиты нахрен не нужны. :) Юнион намного интересней.
А про safe update... Честно говоря не видел ни одного +- сложного проекта, где он был бы включен. Часто бывает нужно проапдейтить несколько таблиц сразу склеенных специфическими джоинами, и никто не хочет заморачиваться промежуточным получением PRIMARY KEY. :)
Имена полей в таблице строятся по принципу:
либо имя инпута в ХТМЛ форме,
либо имя инпут в ХТМЛ форме + название таблицы.
Инфа 99%.
Кроме того, можно же сначала просто к системной таблице обратиться, где записана инфа о таблицах / колонках. С вероятностью 99% в первом селекте будет звездочка, тогда во втором селекте нам нужно будет только угадать количество колонок в исходной таблице, а не их имена ;)
Да все верно. Чет затупил :))
Еще проще сценарий. Начинаешь с:
SELECT ... UNION ALL SELECT 1 -> fail
SELECT ... UNION ALL SELECT 1,1 -> fail
SELECT ... UNION ALL SELECT 1,1,1 -> fail
...
и так пока не выполнится
WAT?
Если обернуть несколько команд в блок BEGIN TRANSACTION .... COMMIT от этого они не станут одной командой.
Единственное, от чего избавит транзакция - от IMPLICIT TRANSACTION на каждую команду.
О всех плюшках транзакций и ACID сейчас речи не идёт...
так и задумывалось))
Хотя выбрать и сразу обновить строки(в транзакции) будет говном или нет?
Для некоторых бизнес-сценариев вполне допустимо такое.
Все от цели атакующего зависит. Если подергать какие-то поля - то да, можно подзапрос или union. Если надо insert или update - увы.
admin'; --
И для тех переменных, которые уйдут в базу методом, аналогичным описанному в топике, тоже? :)
а вот как делать лучше всего:
1. полагаем суперглобалы рид-онли, т.к. мало ли кому еще понадобятся "сырые" данные
2. не сразу, а по мере надобности, считывая, проверяем данные, не изменяя их - и при несоответствии кидаем ошибку. при этом проверяем не злой умысел, а здравый смысл (не пусто, число ли. если это текст, то уголки рано убирать).
3. фильтруем данные каждый раз при записи, причем характер фильтрации зависит от назначения, т.е. убираем теги только при печати, в бд теги остаются (исключение - промежуточный кэш)
Сразу сообщил об этом администратору и не стал пользоваться этой фичей. Затем ушел в армию и за это время мой аккаунт был удален тем пидорасом. Когда хотел перерегистрироваться сайт просил зачислить на счет 500р.
> Суть сайта - люди скидываются деньгами один покупает книгу, сканирует ее и выкладывает.
Так и думал, что не поймешь.
В то же время почти любая художественная книжка, которую я искал, на флибусте была. Ну а техническую литературу приходится искать в других местах. С ней запрос "%name% pdf" или "%name% djvu" обычно вполне прокатывает.
Кстати, есть сайты, где совместными усилиями книжки в ебуки перегоняют? В одиночку влом и тем более влом потом этим делиться с людьми, не принимавшими участвия.