PDA

Просмотр полной версии : Безопасность движков, запаролить веб страницу


Romaxa55
17.12.2005, 00:54
Парни, очень нужна помощ, в php я ноль, тема такая, значит для движка php-fusion, хочу установить пароль, (если вдруг угонят хеш, то в админку злоумышленик не попадет) значит редактирую index.php в директории админцентра, в начало индекеса вставлю вот этот код

$LOGIN = "demo";
$PASSWORD = "demo";
function error ($error_message) {
echo $error_message."<BR>";
exit;
}
if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $LOGIN) && ( $PHP_AUTH_PW == "$PASSWORD" )) ) {
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
error("error");
}
?>

ввожу, ничего не происходит, после трех попыток выдает ошибку, подскажите что нужно дописать
Вот сам код индекса
<?php

require_once "../maincore.php";

require_once BASEDIR."subheader.php";

require_once ADMIN."navigation.php";



if (!iADMIN || $userdata['user_rights'] == "") fallback("../index.php");

if (!isset($pagenum) || !isNum($pagenum)) $pagenum = 1;



$admin_images = true;

if ($page1) { $default = 1; }

elseif ($page2) { $default = 2; }

elseif ($page3) { $default = 3; }

elseif ($page4) { $default = 4; }

else { fallback("../index.php"); }
page

$pageon = true;

if ($pagenum == 1 && !$page1) $pageon = false;

if ($pagenum == 2 && !$page2) $pageon = false;

if ($pagenum == 3 && !$page3) $pageon = false;

if ($pagenum == 4 && !$page4) $pageon = false;

if ($pageon == false) redirect("index.php?pagenum=$default");

opentable($locale['200']." - v".$settings['version']);

echo "<table align='center' cellpadding='0' cellspacing='1' width='100%' class='tbl-border'>\n<tr>\n";

if ($page1) {

echo "<td align='center' width='25%' class='".($pagenum == 1 ? "tbl1" : "tbl2")."'><span class='small'>\n";

echo ($pagenum == 1 ? "<b>".$locale['ac01']."</b>" : "<a href='index.php?pagenum=1'>".$locale['ac01']."</a>")."</span></td>\n";

}

if ($page2) {

echo "<td align='center' width='25%' class='".($pagenum == 2 ? "tbl1" : "tbl2")."'><span class='small'>\n";

echo ($pagenum == 2 ? "<b>".$locale['ac02']."</b>" : "<a href='index.php?pagenum=2'>".$locale['ac02']."</a>")."</span></td>\n";

}

if ($page3) {

echo "<td align='center' width='25%' class='".($pagenum == 3 ? "tbl1" : "tbl2")."'><span class='small'>\n";

echo ($pagenum == 3 ? "<b>".$locale['ac03']."</b>" : "<a href='index.php?pagenum=3'>".$locale['ac03']."</a>")."</span></td>\n";

}

if ($page4) {

echo "<td align='center' width='25%' class='".($pagenum == 4 ? "tbl1" : "tbl2")."'><span class='small'>\n";

echo ($pagenum == 4 ? "<b>".$locale['ac04']."</b>" : "<a href='index.php?pagenum=4'>".$locale['ac04']."</a>")."</span></td>\n";

}

echo "</tr>

<tr>

<td colspan='4' class='tbl1'>\n";

$result = dbquery("SELECT * FROM ".$db_prefix."admin WHERE admin_page='$pagenum' ORDER BY admin_title");

$rows = dbrows($result);

if ($rows != 0) {

$counter = 0; $columns = 4;

$align = $admin_images ? "center" : "left";

echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";

while ($data = dbarray($result)) {

if (checkrights($data['admin_rights']) && $data['admin_link'] != "reserved") {

if ($counter != 0 && ($counter % $columns == 0)) echo "</tr>\n<tr>\n";

echo "<td align='$align' width='25%' class='tbl'>";

if ($admin_images) {

echo "<span class='small'><a href='".$data['admin_link']."'><img src='".ADMIN."images/".$data['admin_image']."' alt='".$data['admin_title']."' style='border:0px;'><br>\n".$data['admin_title']."</a></span>";

} else {

echo "<span class='small'><img src='".THEME."images/bullet.gif' alt=''> <a href='".$data['admin_link']."'>".$data['admin_title']."</a></span>";

}

echo "</td>\n";

$counter++;

}

}

echo "</tr>\n</table>\n";

} else {

echo "<center><br>\n".$locale['401']."<br><br>\n</center>\n";

}

echo "</td>\n</tr>\n</table>\n";

closetable();

tablebreak();

opentable($locale['250']);

echo "<table align='center' cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n<td width='33%' class='small'>

".$locale['251']." ".dbcount("(user_id)", "users", "user_status<='1'")."<br>

".$locale['252']." ".dbcount("(user_id)", "users", "user_status='2'")."<br>

".$locale['253']." ".dbcount("(user_id)", "users", "user_status='1'")."<br>

</td>

<td valign='top' width='33%' class='small'>

".$locale['254']." ".dbcount("(submit_id)", "submissions", "submit_type='n'")."<br>

".$locale['255']." ".dbcount("(submit_id)", "submissions", "submit_type='a'")."<br>

".$locale['256']." ".dbcount("(submit_id)", "submissions", "submit_type='l'")."

<td valign='top' width='33%' class='small'>

".$locale['257']." ".dbcount("(comment_id)", "comments")."<br>

".$locale['258']." ".dbcount("(shout_id)", "shoutbox")."<br>

".$locale['259']." ".dbcount("(post_id)", "posts")."

</td>\n</tr>\n</table>\n";

closetable();



echo "</td>\n";

require_once BASEDIR."footer.php";

?>

Nova
17.12.2005, 13:10
Сделай так

аунтификацию файлом .htaccess такого сожержания <files имя файла.php>
authname admin_area
authtype basic
authuserfile /абсолютный_путь/.htpasswd
require valid-user
</files>

файл .htpasswd думаю найдёш как создать в нём прописываеться логин и пароль к этой аунтификаций

вот пример логин и пароль admin/admin
admin:$apr1$zI5.....$gTUgpZdlFuRl8aKjGCSlg/

Rebz
17.12.2005, 14:07
может я чего-нить конечно и не понимаю))
но где у тебя в примере сама форма куда должен вводиться логин и пароль?
или за это отвечают переменные $php_auth_user и $php_auth_password?

а что за ошибку выводит?

virgoz
17.12.2005, 15:02
Вот это в начало index.php вставь:

$login_check="demo";
$pwd_check="demo";

if(!isset($login)&&!isset($pwd))
{
echo "<form method=post>";
echo "<html><head><title></title></head><body>\n";
echo "Ëîãèí: <br>\n";
echo "<input type=text name=login size=48 value=''><br>";
echo "Ïàðîëü: <br>\n";
echo "<input type=text name=pwd size=48 value=''><br>";
echo "<input name=\"Submit\" type=submit value='go' >";
echo "</form>";
echo "</body></html>\n";
exit;
}
else
{
if($login_check!==$login || $pwd_check!==$pwd){
echo "error";exit;}
}
Только не забудь $login_check и $pwd_check поменять.

qBiN
17.12.2005, 15:49
может я чего-нить конечно и не понимаю))Так оно и есть,парниша хочет аунтификацировать пользователя через Auth Basic(читаем спецификацию http)
Если в 2 строчках будет что-то типа:

if(!isset($_SERVER['PHP_AUTH_USER'])){header('WWW-Authenticate: Basic realm="Authentication"');header('HTTP/1.0 401 Unauthorized');exit;}
else{if($_SERVER['PHP_AUTH_USER']!=="user" || $_SERVER['PHP_AUTH_PW']!=="cool"){die('Error');} echo 'ok';}

ZaCo
17.12.2005, 15:49
2virgoz нее он не то имел ввиду... ромаха юзе гугл:
http://ru.php.net/manual/ru/features.http-auth.php

virgoz
17.12.2005, 16:45
2ZaCo понял ;))

Romaxa55
17.12.2005, 18:21
Парни спасиб большое, ща папробуююю...

Romaxa55
17.12.2005, 18:44
Вот это в начало index.php вставь:

$login_check="demo";
$pwd_check="demo";

if(!isset($login)&&!isset($pwd))
{
echo "<form method=post>";
echo "<html><head><title></title></head><body>\n";
echo "Ëîãèí: <br>\n";
echo "<input type=text name=login size=48 value=''><br>";
echo "Ïàðîëü: <br>\n";
echo "<input type=text name=pwd size=48 value=''><br>";
echo "<input name=\"Submit\" type=submit value='go' >";
echo "</form>";
echo "</body></html>\n";
exit;
}
else
{
if($login_check!==$login || $pwd_check!==$pwd){
echo "error";exit;}
}
Только не забудь $login_check и $pwd_check поменять.

Вот этот код работает, но происходит следубщая херня, у мя стоит php-fusion, и при обращении к индексу админки, идет все номано логи пасс ввожу, иде дальше, и начинается открытие страницы и пишет не верный логин и пасс в самрм php-fusion, и происходит переход на главную страницу. что можно предпринять?

qBiN
17.12.2005, 21:49
что можно предпринять?Использовать мой код =)
Вместо echo "ok"; вставь код админки.

virgoz
18.12.2005, 00:05
Romaxa55, наверное совпадают переменные :)
Поробуй так:

$login_check="demo";
$pwd_check="demo";

if(!isset($login_n)&&!isset($pwd_n))
{
echo "<form method=post>";
echo "<html><head><title></title></head><body>\n";
echo "Ëîãèí: <br>\n";
echo "<input type=text name=login_n size=48 value=''><br>";
echo "Ïàðîëü: <br>\n";
echo "<input type=text name=pwd_n size=48 value=''><br>";
echo "<input name=\"Submit\" type=submit value='go' >";
echo "</form>";
echo "</body></html>\n";
exit;
}
else
{
if($login_check!==$login_n || $pwd_check!==$pwd_n){
echo "error";exit;}
}

Romaxa55
18.12.2005, 16:25
Спасиб большое, очень помогло, все работает, тебе + репутацию ;)

BymeR
24.12.2005, 20:47
Блин а элементарное:

//где нить в начале скипта вставить
if($admpass=="demo"&&$admlog=="demo")
{
//тут текст скрипта...
}
else {echo "bad login";}

Просто разница в том,что менять несколько дольше булешь,но ты ведь не продавать этот скрипт будешь...
Хотя ещё много защиты можно поставить =) ещё ява скриптом пароля защитить мона =)
А посложнее листай защита проектов php...