Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

11.12.2007, 07:14
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Анти SQL injection
Можно легко обезапасить любю cms поставив грамотную фильтрацию, так что если вы не уверненны в своем движке или в чужом просто просто проводите все запросы через эту функцию.
PHP код:
<?
error_reporting(0);
function HLSQL($Query)
{
$Query=preg_replace("/(\s{1})(JOIN)/", "\\1\nJOIN", $Query);
$Query=preg_replace("/([^a-zA-Z]{1})([\d0-9]+)/", "\\1<span style=\"color:6666CC\">\\2</span>", $Query);
$Query=preg_replace("/('[^']+')/", "<span style=\"color:FF9900\">\\1</span>", $Query);
$Query=preg_replace("/(#.*\n)/", "<span style=\"color:999999\">\\1</span>", $Query);
$Query=preg_replace("/FROM[\s+](\S+)\s/", "FROM <span style=\"color:339900;text-decoration:underline\">\\1</span> ", $Query);
$Query=preg_replace("/JOIN[\s+](\S+)\s/", "JOIN <span style=\"color:339900;text-decoration:underline\">\\1</span> ", $Query);
$Query=preg_replace("/(COUNT|SUM)\(([^\)]+)\)/", "<span style=\"color:FF0000;font-weight:bold\">\\1</span>(\\2)", $Query);
$Query=preg_replace("/\s{1}(FROM|JOIN|GROUP|WHERE|ORDER|LIMIT|AND|ON)\s{1}/", " <span style=\"color:0000FF;font-weight:bold;\">\\1</span> ", $Query);
$Query=preg_replace("/\s{1}(BY|OR|AS|IN|BETWEEN)\s{1}/", " <span style=\"color:000000;font-weight:bold;\">\\1</span> ", $Query);
$Query=preg_replace("/(SELECT)/", " <span style=\"color:0000FF;font-weight:bold;\">\\1</span> ", $Query);
$Query=preg_replace("/\(/", "<span style=\"font-weight:bold;\">(</span>", $Query);
$Query=preg_replace("/\)/", "<span style=\"font-weight:bold;\">)</span>", $Query);
return "<p style=\"color:000000; font-size:12px;\">".nl2br($Query)."</p>";
}
?>
|
|
|

11.12.2007, 07:52
|
|
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме: 1106266
Репутация:
366
|
|
а про placeholders вы не слышали?
|
|
|

11.12.2007, 08:02
|
|
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме: 651930
Репутация:
65
|
|
Сообщение от VampiRUS
а про placeholders вы не слышали?
я не слышал=) обьясняй=)
|
|
|

11.12.2007, 08:09
|
|
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме: 1106266
Репутация:
366
|
|
http://rumchten.rsl.ru/2005/ru/upload/doc/1103016958.doc
|
|
|

11.12.2007, 09:09
|
|
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме: 651930
Репутация:
65
|
|
попробовал эту библиотеку, сразу же застрял кричит ошибка
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
в этой стрке
PHP код:
$whonline=mysql_fetch_array($user_online);
до нее
PHP код:
$online =sql_placeholder('SELECT * FROM users_reg WHERE '.time().'-`login_time` <= 60*2');
$user_online = mysql_query($online);
|
|
|

11.12.2007, 09:18
|
|
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме: 651930
Репутация:
65
|
|
пробовал уже и так и этак, эффект одинаковый, но вот если отрубаю библиотеку и ставлю обычные ковычки то все работает=)) бредд
|
|
|

11.12.2007, 13:38
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Имхо, вполне хватит фильтрации основных опасных символов чтобы противостоять иньекции. ну плюс-минус конечно
PHP код:
<?php
$query = $_POST['query'];
$query = str_replace("'",'', $query);
$query = str_replace('-','', $query);
$query = str_replace('+','', $query);
$query = str_replace('/','', $query);
$query = str_replace('*','', $query);
$query = str_replace(' ','',$query);
$query = str_replace('%','',$query);
?>
После фильтрации этих символов sql-инъекция уже и так будет невозможна....Ещё в одном учебнике по php читал что одинарную кавычку лучше не просто фильтровать а заменять на обратную ` .. не знаю насколько эт лучше и сопстна зачем))
Ну Кэш всё равно молодец, лови + 
|
|
|

11.12.2007, 13:59
|
|
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме: 1106266
Репутация:
366
|
|
ну собственно это я кинул для описания сути placeholders
сам я успользую простенькую функцию, взятую из учебника Котерова, мне пока хватает.
|
|
|

11.12.2007, 14:17
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
<?php
$query = $_POST['query'];
$query = str_replace("'",'', $query);
$query = str_replace('-','', $query);
$query = str_replace('+','', $query);
$query = str_replace('/','', $query);
$query = str_replace('*','', $query);
$query = str_replace(' ','',$query);
$query = str_replace('%','',$query);
?>
Если в самой переменной не заданно что данные только пост ac. фильтрацию легко можно обойти постав данные гет.
|
|
|

11.12.2007, 14:29
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
<?php
$query = $GLOBALS['query'];
$query = str_replace("'",'', $query);
$query = str_replace('-','', $query);
$query = str_replace('+','', $query);
$query = str_replace('/','', $query);
$query = str_replace('*','', $query);
$query = str_replace(' ','',$query);
$query = str_replace('%','',$query);
?>
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|