Цитата:
Сообщение от ExDragon
Кот ДаWINчи, ACP ваше творение? а знаю видел тоже так сделал, а вы не заметили
|
Знаешь, сделал ты совсем не так. Ткни меня в то место, где это сделано ТАК.
Поясняю:
Вот файл index.php
Код:
<html>
<head>
</head>
<body>
<?php
session_start();
if (isset($_SESSION[ 'ip' ])){
if ($_SESSION[ 'ip' ] == $_SERVER[ 'REMOTE_ADDR' ]){
require 'config.php';
header("Location: http://".$_SERVER[ 'HTTP_HOST' ]."/".$lk_dir."/sc.php");
} else {
require 'func.php';
in();
}
} else {
require 'func.php';
in();
}
?>
</body>
</html>
Про первые 4 строки я говорить не буду. Я уже объяснял что они дают ошибку в 6 строке.
7 - 10 строки по-русски будут означать так если есть параметр $_SESSION['ip'] такой же как ИП клиента, то запустить ссылку на скрипт sc.php ......
отсюда вопрос, а что злоумышленник не может вбить название этого файла в браузере самостоятельно? если может, то зачем все эти проверки!!!!!
а если глянуть на сам sc.php, то вообще отпадает необходимость в index.php, ибо там один в один тот же код что и здесь в index.php, разбавленный нужными функциями.
И еще созрел вопрос, все скрипты просто изобилуют строками-переходами типа:
Код:
header("Location: http://".$_SERVER['HTTP_HOST']."/".$lk_dir);
А что по другому никак нельзя связать скрипты?
А вот еще вариант:
Код:
<?php
session_start();
require "config/config.php";
require "include/modules_list.php";
require "include/text.php";
require "include/function.php";
// Login
if (isset($_GET['modul']) AND (strtoupper($_GET['modul']) == 'LOGOUT')) {
unset($_SESSION['status']);
unset($_SESSION['user']);
unset($_SESSION['ip']);
unset($_SESSION['login']);
unset($_SESSION['pass']);
}
$cont = mysql_connect($ip, $userdb, $pw);
if (isset($_POST['auth_name']) AND ($_POST['auth_name'] <> '') AND ($_POST['auth_pass'] <> '') AND ($_POST['auth_name'] <> 'Login')) {
// anti SQL-injections
$_POST['auth_name'] = mysql_real_escape_string($_POST['auth_name']);
$_POST['auth_pass'] = mysql_real_escape_string($_POST['auth_pass']);
$par= SHA1(strtoupper($_POST['auth_name']).':'.strtoupper($_POST['auth_pass']));
mysql_select_db($db, $cont);
mysql_query("SET NAMES '$encoding'");
$res = mysql_query('SELECT * FROM `users` WHERE `login`="'.strtoupper($_POST['auth_name']).'" AND `pass` = "'.$par.'"');
$row = mysql_fetch_assoc($res);
if (strtoupper($row['login']) == strtoupper($_POST['auth_name'])) {
if (!isset($_REQUEST[session_name()])) session_start();
$_SESSION['user'] = $row['iduser'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['login'] = strtoupper($row['login']);
$_SESSION['pass'] = strtoupper(($row['pass']));
$_SESSION['status'] = strtoupper(($row['role']));
}
}
// skin
include "skin/".$skin."/skin.php";
?>
здесь у меня делаются все проверки, потом загружается шкурка. Сами же модули подгружаются из шкурки ввиде:
Код:
<?php require "mainform.php";?>
А чтобы злоумышленник не мог самостоятельно выполнить модули, в них первыми строками идет проверка доступности сессии хотя сама сессия там не запускается по session_start()