CREATE TABLE newtable LIKE oldtable; INSERT newtable SELECT * FROM oldtable;
* заметки о разработке сайтов на PHP/Javascript/MySQL, использовании библиотеки JQuery, работе с социальными движками и базами данных. В целом обо всем, с чем приходится сталкиваться обычному веб-программисту
Ярлыки
ubuntu
(20)
javascript
(7)
php
(7)
jquery
(6)
mysql
(6)
elgg
(5)
video
(5)
NetBeans
(4)
Apache
(3)
IDE
(3)
php5
(3)
программирование
(3)
юмор
(3)
SexyBookmark
(2)
XDebug
(2)
css3
(2)
ftp
(2)
mod-rewrite
(2)
nginx
(2)
plugins
(2)
postgres
(2)
социальные сети
(2)
Datepicker
(1)
Firefox
(1)
Google
(1)
Google Font API
(1)
Google Font Directory
(1)
JDK
(1)
SQL
(1)
SilverStripe
(1)
TrueType fonts
(1)
UI
(1)
add-on
(1)
bash
(1)
blogger.com
(1)
blogspot.com
(1)
bug
(1)
bugs
(1)
chrome
(1)
curl
(1)
curlftps
(1)
database
(1)
filezilla
(1)
global menu
(1)
gmailm google
(1)
htaccess
(1)
mail
(1)
mod
(1)
mount
(1)
mysqldump
(1)
pem-key
(1)
profile
(1)
safari
(1)
sendmail
(1)
sftp
(1)
smtp
(1)
ssh
(1)
trim
(1)
unity
(1)
url
(1)
web 2.0
(1)
widgets
(1)
word-wrap
(1)
валидация
(1)
веб-сервер
(1)
графика
(1)
дизайн
(1)
инъекции
(1)
истории
(1)
метаданные
(1)
музыка
(1)
ошибки
(1)
подсветка кода
(1)
создание плагинов
(1)
старые девайсы
(1)
уязвимости
(1)
фон
(1)
Показаны сообщения с ярлыком mysql. Показать все сообщения
Показаны сообщения с ярлыком mysql. Показать все сообщения
21 июля 2015 г.
Копируем таблицу MySQL из консоли
Ярлыки:
mysql
17 апреля 2011 г.
PHP: Защита процесса авторизации от SQL-инъекций
Ярлыки:
инъекции,
уязвимости,
mysql,
php
Раньше, при разработки сайтов, никогда особо не акцентировал свое внимание на защиту от т.з. "SQL-инъекций". Что это такое думаю много говорить не стоит, просто процитирую, что об этом пишут на сайте php.net:
Принудительное внедрение вредоносных инструкций в SQL-запросы - методика, в которой взломщик создает или изменяет текущие SQL-запросы для работы со скрытыми данными, их изменения или даже выполнения опасных команд операционной системы на сервере базы данных. Атака выполняется на базе приложения, строящего SQL-запросы из пользовательского ввода и статических переменных.
Принудительное внедрение вредоносных инструкций в SQL-запросы - методика, в которой взломщик создает или изменяет текущие SQL-запросы для работы со скрытыми данными, их изменения или даже выполнения опасных команд операционной системы на сервере базы данных. Атака выполняется на базе приложения, строящего SQL-запросы из пользовательского ввода и статических переменных.
Когда проект достигает определенного уровня популярности среди пользователей сети, появляются и "доброжелатели", которые всяческим образом пытаются найти уязвимости сайта. Жертвой одну из таких уязвимости и стал один из моих проектов.
Уязвимость была обнаружена в функции, обеспечивающий процесс авторизации администратора на сайте. Для управления проектом был предусмотрен доступ для администратора через веб-форму на сайте приложения. Форма не отличалась особой оригинальностью: поле E-mail и поле Пароль. На серверной стороне для проверки валидности адреса єл. почты и пароля использовалась очень простая процедура: проверка наявности соответствующей записи в таблице пользователей базы данных. SQL-запрос имел следующий вид:
$email = $_POST['email'] $password = $_POST['password']; $query = "SELECT * FROM `users` WHERE `email`='" . $email . "' AND password='" . dohash($password) . "'";
Далее, если запрос возвращал хотя бы одно поле - пользователю автоматически давались права на управления контентом сайта. Если вы используете подобный метод авторизации последующая информация будет для вас полезной.
Ошибкой данного подхода есть отсутствие какой либо проверки значения вводимого в поле e-mail. Для того чтобы получить доступ к управлению сайта, при хорошем знании SQL, было достаточно воспользоваться следующей инъекцией: ввести в поле E-mail следующее значение "any@mail.ru' or 1=1 --" и указать произвольный пароль. При таком значении переменной $email, запрос гарантированно возвращал результат.
Самым простым способом избавиться от такого рода инъекций является использование хеш-функций для преобразования вводимых данных как на стороне PHP так и на стороне SQL-сервера. Например, можно использовать функцию MD5 MySQL () для создания хэш данных на стороне сервера, а также аналогичные функции на стороне PHP.
Таким образом, маленькие изменения запроса обеспечат защиту от инъекций.
$query = "SELECT * FROM `users` WHERE MD5(`email`)='" . md5($email) . "' AND password='" . dohash($password) . "'
24 марта 2011 г.
Как создать дамп базы MySQL, включающий триггеры и хранимые процедуры
Как известно в MySQL 5 была включена потдержка таких возможностей как создание хранимых процедур (stored procedures) и триггеров (triggers).
При попытке создать дамп базы, используя mysqldump, обнаружил в нем отсутствие комманд для создания хранимых процедур.
Как оказалось это было вызвано тем, что mysqldump по-умолчанию сохраняет только триггеры, пропуская хранимые процедуры. Существует два параметра, которые управляют этим поведением:
- --routines – по-умолчанию имеет значение FALSE
- --triggers – по-умолчанию имеет значение TRUE
Еслы же необходимо сохранить только хранимые процедуры и триггеры, без MySQL-таблиц и данных (скажем, чтобы импортировать их в другую базу данных), для этого можно использовать что-то вроде:mysqldump -u root -p --routines [ИМЯ_БАЗЫ_ДАННЫХ] > dump.sql
Чтобы импортировать данные в другую БД используя полученный дамп, следует воспользоваться следующей коммандой:mysqldump -u root -p--routines --no-create-info --no-data --no-create-db --skip-opt
[ИМЯ_БАЗЫ_ДАННЫХ] > dump.sql
mysql -u root [ИМЯ_БАЗЫ_ДАННЫХ] < dump.sql
9 марта 2011 г.
Как создать новую базу в MySQL и пользователя для нее
Небольшой пост о том, как создавать из командной строки mysql новую базу данных и нового пользователя mysql с полными правами на только что созданную базу.
mysql -uroot -p <enter_mysql_root_pass> CREATE DATABASE <DB_NAME>; GRANT ALL PRIVILEGES ON <DB_NAME>.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION
Для того чтобы выставить новому пользователю полные права на все базы данных используем следующую команду:
GRANT ALL PRIVILEGES ON *.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
Доступ к базе для данного пользователя возможен только с localhost. Если вы хотите дать ему доступ к базе с любого хоста, используете % вместо localhost:
GRANT ALL PRIVILEGES ON <DB_NAME>.* TO 'my_user'@'%' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
Выше приведены простые, но часто используемые команды mysql.
Для дополнения и использования более сложных команд читайте документацию к mysql.
Сброс пароля пользователя root MySQL-сервера в Ubuntu
1. Останавливаем mysql сервер
/etc/init.d/mysql stop
2. Запускаем mysql следующей командой:
/usr/bin/mysqld_safe --skip-grant-tables &
3. Соединяемся как root без пароля:
mysql --user=root mysql
4. Обновляем пароль:
mysql> update user set Password=PASSWORD('новый пароль')
WHERE User='root';
mysql> flush privileges;
Подробнее можно прочитать здесь.
16 сентября 2010 г.
Как скачать дамп базы данных имея доступ по ftp?
Столкнулся с задачей, когда доступ к файлам проекта открыт только по ftp, при этом база данных находиться на другом сервере и доступ к ней ограничен. Возник вопрос: возможно ли получить дамп базы имея доступ по ftp?
Ответ очень прост: “Всё возможно верующему” (Евангелие от Марка 9:14-29)
Итак, что нам нужно будет сделать:
Шаг 1. Загружаем и устанавливаем последнюю версию программы EMS SQL Manager (http://www.sqlmanager.net/)
Ответ очень прост: “Всё возможно верующему” (Евангелие от Марка 9:14-29)
Итак, что нам нужно будет сделать:
Шаг 1. Загружаем и устанавливаем последнюю версию программы EMS SQL Manager (http://www.sqlmanager.net/)
Шаг 2. В папке установленной программы (обычно c:\Program Files\EMS\SQL Manager for MySQL\) находим скрипт emsproxy.php и копируем его на наш хост по ftp. Единственное условие - чтобы была возможность прямого обращения к скрипту через УРЛ (напр.: http://www.myhost.com/emsproxy.php).
Шаг 4. Запускаем EMS SQL Manager и регистрируем новый хост ():
Указываем где установлена БД (ip-адрес или localhost - если доступно на том же сервере), а также логин и пароль для доступа к базе данных.
Соглашаемся использовать туннелирование (ставим галочку Use tunneling) и выбираем HTTP протокол для этого дела (HTTP tunneling). Далее...
Указываем URL к скрипту.
Далее...
Выбираем нужную нам базу данных.
Далее... переходим к следующему окну и заканчиваем (Finish).
Шаг 5. Делаем экспорт данных нашей базы.
Здесь все очень просто. В главном меню выбираем Tools > Extract Database, выбираем нужную базу и сохраняем в файл (не забыв при этом поставить галочку в поле Extract all metadata and data of the database).
С задачей справились - дамп получен. Помимо дампа, теперь имеем возможность управлять удаленной базой данных, что весьма и весьма полезно :)
P.S. Если на удаленном сервере используется СУБД Postgres можно аналогичным способом добыть доступ к БД используя программу SQL Manager for Postgres
Подписаться на:
Сообщения (Atom)