только mysql_escape_string() для этого достаточно?
2)как защититься от подмены get/post запросов?
3)как защититься от кражи сессии?
4)почему некоторые программисты хранят сессии в БД mysql, это безопаснее или так быстрее работает?
5)какая команда нужна, что вся БД mysql была в utf-8?
6)можно ли несколько покупок продать одним кликом в paypal? т.е. в корзине на моем
сайте несколько товаров, юзер нажимает одну кнопку buy now и попадает на paypal.com
для оплаты?(ссылку на пример рабочии, если не трудно)
7)можно ли проверить php скриптом оплату товара пользователем?(ссылку на пример рабочии, если не трудно)
8)Правильно ли я выбрал типы полей для своей БД? Можно ли эту БД как-то упростить?
CATEGORY:
cat_id(smallint),
item_name(tinytext)
ITEMS:
item_id(smallint),
cat_id(smallint),
title(tinytext),
description(text),
in_stock(tinyint(2). takes 2 values: 1 or 0),
image_id(tinyint),
add_date(datetime),
hide(tinyint(2). takes 2 values: 1 or 0),
price(mediumint)
IMAGES:
image_id(smallint),
item_id(smallint),
image_link(text)
USERS:
user_id(smallint),
name(tinytext),
surname(tinytext),
phone(tinyint),
mobile_ph(tinyint),
email(tinytext),
address(text),
ip(tinyint)
ORDERS:
order_id(smallint),
user_id(smallint),
item_id(smallint),
qty(smallint),
status(tinytext. takes 2 valus: waiting or approved),
add_date(datetime),
currency(tinytext. takes 3 values: euro, pounds, US dollars),
total_price(int),
income(int),
approved(datetime)
ADMIN:
admin_id(smallint),
name(tinytext),
password(tinytext),
last_visit(datetime)
9)Как правильно хранить ссылки на картинки в БД? Записать все ссылки в одну строку т.е. вот так:
image_id, item_id, image_link
1, ............1, ......... www.site.ru/image1.jpg
.............................. www.site.ru/image2.jpg
...............................www.site.ru/image3.jpg
...............................www.site.ru/image4.jpg
2, .............2,...........www.site.ru/image5.jpg
.............................. www.site.ru/image6.jpg
...............................www.site.ru/image7.jpg
................................www.site.ru/image8.jpg
и потом ссылки парсить reg.ex'ом или нужно записывать каждую ссылку на новую строку, т.е. так:
image_id, item_id, image_link
1, ............1,........... www.site.ru/image1.jpg
2, ............1, ...........www.site.ru/image2.jpg
3, ............1,............ www.site.ru/image3.jpg
4,.............1,.............www.site.ru/image4.jpg
5,.............2,..............www.site.ru/image5.jpg
6,.............2,.............www.site.ru/image6.jpg
7,.............2,.............www.site.ru/image7.jpg
8,.............2,.............www.site.ru/image8.jpg
?
10)Поле ITEMS.add_date(datetime) получает значение в формате YYYY-MM-DD HH:MM:SS, а мне нужно в таком: d-m-yyyy @ hh:mm:ss
Как это сделать, reg.ex'oм парсить эту строку или как-то по другому?
Спустя 6 минут, 35 секунд (17.03.2010 - 03:29) qpayct написал(а):
ответы на все эти темы уже неоднократно обсуждались в курсах twin'a иди на главную страницу и там ищи.
Спустя 3 часа, 28 минут, 27 секунд (17.03.2010 - 06:57) Игорь_Vasinsky написал(а):
не хватает вопроса "А правильно я зделал что написал всё это..."
Спустя 2 минуты, 57 секунд (17.03.2010 - 07:00) Игорь_Vasinsky написал(а):
Цитата |
10)Поле ITEMS.add_date(datetime) получает значение в формате YYYY-MM-DD HH:MM:SS, а мне нужно в таком: d-m-yyyy @ hh:mm:ss Как это сделать, reg.ex'oм парсить эту строку или как-то по другому? |
это жа ваши переменные в вашем скрипте... И только вы задаёте их формат, а почему не в php
Спустя 2 часа, 31 минута, 51 секунда (17.03.2010 - 09:32) Awilum написал(а):
Try >>><<< first
Спустя 1 час, 13 минут, 57 секунд (17.03.2010 - 10:46) sergeiss написал(а):
Awilum, qpayct - если вы даете ссылки, то давайте более конкретные ссылки! И уж тем более не отправляйте человека по адресу "к твину", не указав конкретно, что имеется ввиду Потому что человек, только что "прибывший" на форум, вовсе не обязан знать, кто такой твин, и где его сайт находится.
Спустя 18 минут, 15 секунд (17.03.2010 - 11:04) Игорь_Vasinsky написал(а):
Цитата |
1)какой функцией фильтровать get/post запросы от sql inj. и xss? только mysql_escape_string() для этого достаточно? |
mysql_escape_string()
Функция mysql_escape_string — Экранирует SQL спец-символы для mysql_query.
$post = htmlspecialchars($post); //преобразует специальные символы в HTML сущности.
$post = strip_tag($post) //функция возвращает строку str , из которой удалены HTML и PHP тэги
$post = addslashes($post);//Экранирует спецсимволы в строке - схожа с mysql_escape_string
безопасней передовать $_POST, а гет используй для передачи id или номера страницы (вообщем открытые данные)
Цитата |
2)как защититься от подмены get/post запросов? |
GET запросы у всех на виду - на странице обработчика пропиши для каждого $_GET - возможные варианты, если передан левый запрос - звони в милицию
$_POST запросы:
на странице с формой отправляй session_id() - на странице обработчика сравнивай сессии
Так же на странице проверь дествительно ли гость пришёл с твоей страницы с формой, а не локалхоста на денвере
<?php
// $site_addres можете поменять на свое
// но лучше определить его в "общем" файле
if ($_SERVER['HTTP_REFERER'] =! $site_address) die;
?>
Так лучше вообше самому всё рассказать, может понятней получится.
Спустя 5 часов, 59 минут, 9 секунд (17.03.2010 - 17:03) Nikitian написал(а):
Вот сразу видно: человек постарался, подготовил пачку вопросов. Отвечу на те, в которых уверен.
1) От sql-inj:
mysql_escape_string(), mysql_real_escape_string()
От xss:
htmlspecialchars();
2) никак. Не доверяйте ничему, что приходит от пользователя, он всё может изменить.
3) Защитить сервер физически и нанять админа, который не даст пробиться напрямую к хранилищу сессий.
Если вопрос хотел звучать так: "Как защитить пользователей от подмены идентификатора сессии?" То тут так: храните ip пользователя и юзер-агент и сверяете их с теми, что получаете от пользователя + особо важные действия типа смены мыла, пароля, оплаты требуете дополнительно вводить пароль.
4) Быстрее работает. Хотя сессии, как key-value лучше хранить в специализированных key-value хранилищах, типа memcached.
5)
9) Второй вариант предпочтителен и правелен: на каждую сущность отдельную запись в бд.
1) От sql-inj:
mysql_escape_string(), mysql_real_escape_string()
От xss:
htmlspecialchars();
2) никак. Не доверяйте ничему, что приходит от пользователя, он всё может изменить.
3) Защитить сервер физически и нанять админа, который не даст пробиться напрямую к хранилищу сессий.
Если вопрос хотел звучать так: "Как защитить пользователей от подмены идентификатора сессии?" То тут так: храните ip пользователя и юзер-агент и сверяете их с теми, что получаете от пользователя + особо важные действия типа смены мыла, пароля, оплаты требуете дополнительно вводить пароль.
4) Быстрее работает. Хотя сессии, как key-value лучше хранить в специализированных key-value хранилищах, типа memcached.
5)
ALTER DATABASE `имя базы` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
9) Второй вариант предпочтителен и правелен: на каждую сущность отдельную запись в бд.