|
|
|
|
|
для: valenok
(24.09.2006 в 12:42)
| | Это спасёт от всех скриптов вводимых пользователем? | |
|
|
|
|
|
|
|
для: valenok
(24.09.2006 в 12:43)
| | $ip = $_SERVER['REMOTE_ADDR']; - а если пользователь сидит через прокси-сервер | |
|
|
|
|
|
|
|
для: valenok
(24.09.2006 в 12:48)
| | А на производительность и безопасность это влияет? | |
|
|
|
|
|
|
|
для: KIM
(24.09.2006 в 04:34)
| |
5) Система авторизации
При правильном пароле и логине создаётся переменная $_SESSION['login'] = $_POST['login'];
И всё...
6) Файл конфигурации (цвета, пароли, настройки и тп):
В рабочей странице на самом первом месте стоит вот это:
$def=1;
include('config.php');
далее переменные получившие значения в конфиг-файле используются в рабочей странице.
В файле config.php
if(empty($def)or($def)!==1){exit();}
|
Во первых отключи register_globals
или дай перемнной def значение по круче..
А в файле который инклудим:
<?
if(!isset($def,$_SESSION['user']) OR $def!='FiFi77') die;
|
| |
|
|
|
|
|
|
|
для: KIM
(24.09.2006 в 04:34)
| |
<?
$l и $p; // - входящие данные (POST)
$a = mysql_connect('server', 'user', 'd4d3s56d3f');
mysql_select_db('kimbd', $a);
$b = mysql_query("select * from users where login='$l' and password='$p' ");
$b = mysql_fetch_array($b);
if (empty($b)){$access_var='false';}else{$access_var='true';}
mysql_close($a);
|
В опервых можно просто mysql_result'ом
А во вторых он не нужен.
А я кстати так не выбираю.
Я выбираю пользователя с таким именем а скриптом сравниваю пароли..
<?
$l и $p; // - входящие данные (POST)
$a = mysql_connect('server', 'user', 'd4d3s56d3f');
mysql_select_db('kimbd', $a);
$b = mysql_query("SELECT * FROM `table` WHERE `password`='".$p."' AND `user`='".$l."' ");
if(mysql_num_rows($b)!=1) die('Authorization error');
mysql_close($a);
|
| |
|
|
|
|
|
|
|
для: KIM
(24.09.2006 в 04:34)
| |
<?
If (isset($_POST['button'])){
//1) Коннект к MySQL
//2) Проверка количества строк в таблице temp с сегодняшней датой и IP пользователя подавшего запрос.
//- Если их, например, больше 5 то
header("Loction: xx.htm");
mysql_close($a);
exit();
}
|
- А если ещё нет 5 то происходит Добавление в таблицу temp строчки с датой и IP. А если это защита системы авторизации, то на этом этапе ещё происходит проверка пароля и логина, если пароль верный то происходит удаление всех строк с таблицы temp и дальнейшие действия.
5 много, на мой взгляд, ну если только сайт расчитан не на одарённых.. | |
|
|
|
|
|
|
|
для: KIM
(24.09.2006 в 04:34)
| |
function user_ip(){
if ($ip = getenv("HTTP_CLIENT_IP"))
{return $ip;}
if ($ip = getenv("HTTP_X_FORWARDED_FOR")) {
if ($ip == '' || $ip == "unknown")
{ $ip = getenv("REMOTE_ADDR"); }
return $ip;}
if ( $ip = getenv("REMOTE_ADDR") )
{ return $ip; } }
|
if ($ip = getenv("HTTP_X_FORWARDED_FOR")) {
|
Невнимательность штука весьма опасная..
Да и куда тебе это всё?
$ip = $_SERVER['REMOTE_ADDR']; | |
|
|
|
|
|
|
|
для: KIM
(24.09.2006 в 04:34)
| |
<?
function filter($filter_text){
$filter_text = substr($filter_text,0,10000);
$filter_text = htmlspecialchars(stripslashes($filter_text));
$filter_text = ereg_replace(chr(10),"<br>",$filter_text);
$filter_text = ereg_replace(chr(13),"",$filter_text);
$filter_text = ereg_replace("'","'",$filter_text);
$filter_text = preg_replace("/\S{60,}/",""",$filter_text);
return $filter_text;}
|
Лишнее это всё..
При вводе в базу просто mysql_escape_string($text);
А при ыводе на экран nl2br(htmlspecialchars($text));
В базе указываешь длины значений в поле и они сами будут обрезаться.. | |
|
|
|
|
|
|
| Я решил создать сайт, точнее давно планирую и пытаюсь построить и кажется построил, но есть некоторые сомнения на счёт алгоритмов и вообще мысли некоторых активных частей сайта. Посмотрите пожалуйста и оцените и при обнаружении спорных, неразумных или опасных (хак) моментов посоветуйте что нибудь.
1) Система фильтрации всех типов входящих данных (все POST и GET):
function filter($filter_text){
$filter_text = substr($filter_text,0,10000);
$filter_text = htmlspecialchars(stripslashes($filter_text));
$filter_text = ereg_replace(chr(10),"<br>",$filter_text);
$filter_text = ereg_replace(chr(13),"",$filter_text);
$filter_text = ereg_replace("'","'",$filter_text);
$filter_text = preg_replace("/\S{60,}/",""",$filter_text);
return $filter_text;}
2) Система распознования IP
function user_ip(){
if ($ip = getenv("HTTP_CLIENT_IP"))
{return $ip;}
if ($ip = getenv("HTTP_X_FORWARDED_FOR")) {
if ($ip == '' || $ip == "unknown")
{ $ip = getenv("REMOTE_ADDR"); }
return $ip;}
if ( $ip = getenv("REMOTE_ADDR") )
{ return $ip; } }
2) Система защиты от подбора и от флуда
If (isset($_POST['button'])){
1) Коннект к MySQL
2) Проверка количества строк в таблице temp с сегодняшней датой и IP пользователя подавшего запрос.
- Если их, например, больше 5 то
header("Loction: xx.htm");
mysql_close($a);
exit();
- А если ещё нет 5 то происходит Добавление в таблицу temp строчки с датой и IP. А если это защита системы авторизации, то на этом этапе ещё происходит проверка пароля и логина, если пароль верный то происходит удаление всех строк с таблицы temp и дальнейшие действия.
}
4) Система проверки пароля и логина соответственно
$l и $p - входящие данные (POST)
$a = mysql_connect('server', 'user', 'd4d3s56d3f');
mysql_select_db('kimbd', $a);
$b = mysql_query("select * from users where login='$l' and password='$p' ");
$b = mysql_fetch_array($b);
if (empty($b)){$access_var='false';}else{$access_var='true';}
mysql_close($a);
5) Система авторизации
При правильном пароле и логине создаётся переменная $_SESSION['login'] = $_POST['login'];
И всё...
6) Файл конфигурации (цвета, пароли, настройки и тп):
В рабочей странице на самом первом месте стоит вот это:
$def=1;
include('config.php');
далее переменные получившие значения в конфиг-файле используются в рабочей странице.
В файле config.php
if(empty($def)or($def)!==1){exit();}
Ну вот и всё... | |
|
|
|
|