ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

23.07.2008, 10:58
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 150
Провел на форуме: 771228
Репутация:
77
|
|
тс спросил как обезопасить етот скрипт ? или тема называется "ТОЛЬКО безопасные скрипты" ? насколько я вижу , раздел PHP,PERL,Javascript . причем сдесь то безопасен ли этот скрипт ? тс попросил пример - ему дали , дальше это его дело пользоватся им или нет , ему никто ничего не навязывает
а если нужен безопасный скрипт можно сделать так
PHP код:
<?php
$location=array (
'1'=>"http://google.com",
'2'=>"http://mail.ru",
....
);
$link=intval($_GET['link']);
if (array_search ($link,array_keys($location))===FALSE)
{die("неправильная ссылка");}
else
{
$perehodi=file_get_contents($_GET['link'])+1;
$fw=fopen ($_GET['link'],"w+");
fputs ($fw,$perehodi);
header ("Location: ".$location[$_GET['link']]);
}
?>
Последний раз редактировалось 5triker; 23.07.2008 в 11:10..
|
|
|

23.07.2008, 11:59
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
И как это должно работать , сам то тестил?
Хотя бы по логике ?
То есть при линке index.php?link=1 в какой файл будет идти сохранение ?
Вообщем как то так это должно выглядеть.
PHP код:
<?php
$logfile = "/home/stat";
$ext=".php";
$location=array (
'1'=>"http://google.com",
'2'=>"http://mail.ru",
);
$link=intval($_GET['link']);
if (array_search ($link,array_keys($location))===FALSE)
{
die("неправильная ссылка");
}
else
{
if (is_file($logfile.$link.$ext))
{
if (is_writeable($logfile.$link.$ext))
{
$perehodi=file_get_contents($logfile.$link.$ext);
if (strlen($perehodi)>0)
{
$perehodi = intval($perehodi)+1;
}
else
{
$perehodi =1;
}
$fw=fopen ($logfile.$link.$ext,"w+");
fputs ($fw,$perehodi);
fclose ($fw);
header ("Location: ".$location[$link]);
die();
}
else
{
die("Проверьте права на запись для файла".$logfile.$link.$ext);
}
}
else
{
if (($fw=fopen ($logfile.$link.$ext,"w+"))==FALSE)
{
die("Проверьте права на запись для файла".$logfile.$link.$ext);
}
else
{
fclose ($fw);
}
}
}
?>
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
Последний раз редактировалось SQLHACK; 23.07.2008 в 12:29..
|
|
|

23.07.2008, 12:34
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
SQLHACK Чувак не парься =)
PHP код:
$fw=fopen ($logfile.$link.$ext,"a+");
flock($fw, LOCK_EX);
$perehodi = fread($fw,filesize($logfile.$link.$ext));
if (strlen($perehodi)>0)
{
$perehodi = intval($perehodi)+1;
}
else
{
$perehodi =1;
}
ftruncate($fw, 0);
fputs ($fw,$perehodi);
fclose($fw);
Остольные проверки это на выбор (для красоты  )
Последний раз редактировалось Doom123; 23.07.2008 в 12:53..
|
|
|

23.07.2008, 13:42
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 150
Провел на форуме: 771228
Репутация:
77
|
|
И как это должно работать , сам то тестил?
Хотя бы по логике ?
То есть при линке index.php?link=1 в какой файл будет идти сохранение ?
тестил
по логике , делает GET['link'] числом ищет в массиве location такой ключ если находит прибавляет 1 в файл , не находит die ()
сохранит в файл "1"
и зачем усложнять етим
PHP код:
if (strlen($perehodi)>0)
{
$perehodi = intval($perehodi)+1;
}
else
{
$perehodi =1;
если ето первый переход и файл пустой то пусто+1 то будет все равно 1
Последний раз редактировалось 5triker; 23.07.2008 в 13:52..
|
|
|

23.07.2008, 14:24
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
я тебе про это
PHP код:
$fw=fopen ($_GET['link'],"w+");
а в начале он на intval проверяется, то есть если я введу 1qasd то будет создан файл 1qasd, и затирания файлов тогда не избежать, к примеру можно юзать, 1/../../../../../etc/passwd, его конечно врядли затрёшь, но это просто пример. таким образом можно затереть любой файл если прав хватит.
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
|
|
|

23.07.2008, 14:37
|
|
Участник форума
Регистрация: 05.04.2007
Сообщений: 150
Провел на форуме: 771228
Репутация:
77
|
|
там я прост забыл поменять $_GET['link'] на $link
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|