kilk27855
Новичок
Добрый день ув форумчани phpclub помогите решить проблему как обезапасить сайт его взломали так как не какой защиты нету от SQL иньекции и XSS, движок старый пабликовый не какой информации нету над разроботкай и тем более подержки нету ее так вот взялся я за него и сам доробатываю ее так вот такой вопрос встал у меня как выше я написал при хороший посещаймости сайта моего на этом движке мне его взломали сайт как кто взломали и поставили редирект на левый сайт, вроде я решил это вопрос вёл в .htaccess
так вот думаю сделал c .htaccess пока работаю на локале и доробатываю cms так вот теперь вопрос встал о защита от SQL иньекции и XSS
перешеверял я движок каждый фаил и нашёл из одних фаилов в ajax.php такую строку
так вот из за этого кода возможна взломать сайт через sql инъекцию или через xss, помогите улучшить защиту, так как я нашёл данного разрабочика сms он не ведёт бесплатную разработку + не хочет конкурентов видеть в просторе интернета конкурентов а если видит ломает как орехи и ставит редирект на его свой сайт, ув форумчани помогите пожалуйста
Код:
#Защищаем .htaccess файл
<files .htaccess="">
order allow,deny
deny from all
</files>
#Включаем отслеживание сим-ссылок
Options +FollowSymLinks
#Запускаем url_rewriting
RewriteEngine On
#Блокируем все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокируем все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокируем все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправляем все подобные на страницу с ошибкой 403 — запрещено
RewriteRule ^(.*)$ index.php [F,L]
перешеверял я движок каждый фаил и нашёл из одних фаилов в ajax.php такую строку
Код:
# Защита от SQL иньекции и XSS
$act = intval($_REQUEST['type']);
$id = intval($_REQUEST['id']);
$uID = (intval($_REQUEST['uID'])) ? intval($_REQUEST['uID']) : $_SERVER['REMOTE_ADDR'];
$my = $main->db->query('SELECT * FROM `mk_list` where id=\''.$id.'\'');
$row_my = $main->db->fetch($my);
if($row_my == 0)
{
echo "ACCESS DENIED!!111";
exit();
}
$query = $main->db->query('SELECT * FROM `mk_vote` where id_serv=\''.$id.'\' and ip=\''.$_SERVER['REMOTE_ADDR'].'\'');
while ($row_vt = $main->db->fetch($query))
{
$date = $row_vt['date'];
}
$row_nm = $main->db->num($main->db->query('SELECT * FROM `mk_vote` where id_serv=\''.$id.'\' and ip=\''.$_SERVER['REMOTE_ADDR'].'\''));
$row_ab = $main->db->num($main->db->query('SELECT * FROM `mk_vote` where id_serv=\''.$id.'\''));
if($row_nm > 0 && $date > time())
echo 'already';
elseif($row_ab >= $conf['dvote'])
echo 'already2';
else
{
if($act == 'up')
{
$updateSQL = sprintf('UPDATE `mk_list` SET golos=golos+\'1\' where id=\''.$id.'\'');
$Result1 = $main->db->query($updateSQL);
$my = $main->db->query('SELECT * FROM `mk_list` where id=\''.$id.'\'');
$row_my = $main->db->fetch($my);
$date = time() + ( 60 * 60 * 24 );
$main->db->query('INSERT INTO mk_vote(id_serv, user, ip, date) VALUES (\''.$id.'\',\''.$uID.'\',\''.$_SERVER['REMOTE_ADDR'].'\',\''.$date.'\')');
echo 'thanks';
}
}
}
function favourites()
{
global $main;
$sID = intval($_REQUEST['sID']);
$uID = intval($_REQUEST['uID']);
$act = intval($_REQUEST['act']);
$servID = $main->db->fetch($main->db->query("SELECT * FROM `mk_favourites` where uID='".$uID."'"));
if ($act=='add')
{
if($servID['sID'] == '')
{
$main->db->query("UPDATE `mk_favourites` SET `sID`='".$sID."' where uID='".$uID."'");
echo 'add';
}
else
{
$main->db->query("UPDATE `mk_favourites` SET `sID`=concat(sID, ',', $sID) where uID='".$uID."'");
echo 'add';
} }
elseif($act=='del')
{
$massiv = explode(',',$servID['sID']);
$full = $servID['sID'];
for($i=0;$i<count($massiv);$i++)
{
if(!$i)
$return = str_replace($sID,'',$full);
elseif($massiv[0] == $sID)
$return = str_replace($sID.',','',$full);
else
$return = str_replace(','.$sID,'',$full);
$main->db->query('UPDATE `mk_favourites` SET `sID`=\''.$return.'\' where uID=\''.$uID.'\'');
}
echo 'del';
}
}
function online()
{
global $main;
$onl_time = time() - ( 60 * 10 );
$all_onl = $main->db->num($main->db->query("SELECT * FROM `mk_sessions` where time>'$onl_time' group by uname"));
echo $all_onl;
}
function sitemap()
{
global $main;
$result = $main->db->query("SELECT * FROM `mk_list` where status='1'");
$time = gmdate("Y-m-j", time() + 3600*(3+date("I")));
$handler = fopen('../../sitemap.xml', "w");
fwrite($handler, "<?xml version=\"1.0\" encoding=\"windows-1251\"?>\r\n");
fwrite($handler, "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n");
$sitemaplink = "http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']),'/\\')."/";
$sitemaplink = preg_replace( "#(.+)engine/ajax/#", "\\1", $sitemaplink );
while ($sitemap = $main->db->fetch($result))
{
fwrite($handler, "<url>\r\n");
fwrite($handler, "<loc>".$sitemaplink."server-".$sitemap['id']."/</loc>\r\n");
fwrite($handler, "<lastmod>".$time."</lastmod>\r\n");
fwrite($handler, "<changefreq>weekly</changefreq>\r\n");
fwrite($handler, "<priority>0.8</priority>\r\n");
fwrite($handler, "</url>\r\n");
}
$res = $main->db->query("SELECT * FROM `mk_stathtml` where stat='1'");
$time = gmdate("Y-m-j", time() + 3600*(3+date("I")));
while ($sitemp = $main->db->fetch($res))
{
fwrite($handler, "<url>\r\n");
fwrite($handler, "<loc>".$sitemaplink."page/".$sitemp['cid']."/</loc>\r\n");
fwrite($handler, "<lastmod>".$time."</lastmod>\r\n");
fwrite($handler, "<changefreq>weekly</changefreq>\r\n");
fwrite($handler, "<priority>0.9</priority>\r\n");
fwrite($handler, "</url>\r\n");
}
fwrite($handler, "<url>\r\n");
fwrite($handler, "<loc>".$sitemaplink."choose/</loc>\r\n");
fwrite($handler, "<lastmod>2014-02-25</lastmod>\r\n");
fwrite($handler, "<changefreq>weekly</changefreq>\r\n");
fwrite($handler, "<priority>0.9</priority>\r\n");
fwrite($handler, "</url>\r\n");
fwrite($handler, "<url>\r\n");
fwrite($handler, "<loc>".$sitemaplink."vote/</loc>\r\n");
fwrite($handler, "<lastmod>2014-02-25</lastmod>\r\n");
fwrite($handler, "<changefreq>weekly</changefreq>\r\n");
fwrite($handler, "<priority>0.9</priority>\r\n");
fwrite($handler, "</url>\r\n");
fwrite($handler, "</urlset>");
fclose($handler);
$sitemaplink = "http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER[PHP_SELF]),'/\\')."/sitemap.xml";
$sitemaplink = preg_replace( "#(.+)engine/ajax/#", "\\1", $sitemaplink );
$sitemaplist = array (
"http://google.com/webmasters/sitemaps/ping?sitemap=".$sitemaplink,
"http://submissions.ask.com/ping?sitemap=".$sitemaplink,
"http://bing.com/webmaster/ping.aspx?siteMap=".$sitemaplink,
"http://api.moreover.com/ping?sitemap=".$sitemaplink,
);
foreach($sitemaplist as $i=>$sitemapengine)
{
$parse = parse_url($sitemapengine);
if(!isset($parse['host'])) return false;
$host = $parse['host'];
$port = isset($parse['port'])?$parse['port']:80;
$path = isset($parse['path'])?$parse['path']:'/';
$query = isset($parse['query'])?$parse['query']:'/';
if($ping = @fsockopen($host, $port, $errno, $errstr, 1))
{
fputs ($ping, "GET ".$path."?".$query." HTTP/1.0\r\n".
"User-Agent: Admin\r\n".
"Host: ".$host."\r\n\r\n");
}
fclose($ping);
}
}
function update()
{
global $conf;
$update = strtolower($_SERVER['HTTP_HOST']);
$update = @file_get_contents('http://samp-stats.ru/version.php?u='.$update);
echo $update;
}