Дупка в сайта как да я оправя.

simost

Registered
Значи имам дупка в сайта ... като влезна ето така в сайта

Код:
http://127.0.0.1/index.php?a=category&catid=2&page=%271

и ми излиза

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 1[SELECT * FROM news WHERE catid='20' ORDER BY id DESC LIMIT -10, 10]

А иначе като влезна ето така

Код:
http://127.0.0.1/index.php?a=category&catid=2&page=271

няма проблеми всичко си е точно :(

мисля че проблема идва от този код

PHP:
$query = "SELECT * FROM news HERE catid='$catid' ORDER BY id DESC LIMIT $limitvalue, $pp";
$result = mysql_query($query) or die(mysql_error()."[".$query."]");
 
PHP:
if(is_numeric($page)){
$limitvalue = $page * $pp - ($pp);
}
else{
die("error");
}
Ето така още в момента, в който минеш след _GET веднага проверяваш. Просто няма смисъл да продължава надолу ако някой мъчи да прецаква.
 
Нещо немога да го вградя ето ми кода ако може да го сложите..

PHP:
<?php
echo "<div class='gm-listen-header'><span class='gm-ls-link-selected'>Секция Игри</span><div class='clear'></div></div>";
$catid=$_GET['catid'];
$pp = "10";
$total = mysql_result(mysql_query("SELECT COUNT(id) FROM news WHERE catid='$catid'"),0);
$numofpages = $total / $pp;
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
}
$limitvalue = $page * $pp - ($pp);

$query = "SELECT * FROM news WHERE catid='$catid' ORDER BY id DESC LIMIT $limitvalue, $pp";
$result = mysql_query($query) or die(mysql_error()."[".$query."]");
$i = 0;
 
PHP:
<?php
echo "<div class='gm-listen-header'><span class='gm-ls-link-selected'>Секция Игри</span><div class='clear'></div></div>";
$catid = $_GET['catid'];
if(!is_numeric($catid)) die("error catid");
$pp = "10";
$total = mysql_result(mysql_query("SELECT COUNT(id) FROM news WHERE catid='$catid'"),0);
$numofpages = $total / $pp;
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
if(!is_numeric($page)) die("error page");
}
$limitvalue = $page * $pp - ($pp);

$query = "SELECT * FROM news WHERE catid='$catid' ORDER BY id DESC LIMIT $limitvalue, $pp";
$result = mysql_query($query) or die(mysql_error()."[".$query."]");
$i = 0;

Би трябвало така да стане.
 
:) Не и по този начин. Ето огледай тази тема и ще се отчаяш :) На мен ми отне време да си оправя всички неща по моите системи които бях оставил широко отворени без да знам преди да прочета темата:
http://web-tourist.net/forum/viewtopic.php?t=83500
 
Ако искаш защита против хакване, ето:

<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "asd.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "Атаката е записана, брааат!"; exit;
}
?>

Създай си един файл asd.txt . :)
 
DobriMcConnor каза:
Ако искаш защита против хакване, ето:

<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "asd.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "Атаката е записана, брааат!"; exit;
}
?>

Създай си един файл asd.txt . :)

Всичките знаете един код и без да мислите пускате :D

Колкото до проверка на GET данните, дали е целочислено го правете със ctype_digit();
 
Ех, как го обърка човека.... този файл asd.txt си го правиш празен, а кода, който ти даде DobriMcConnor се инклудва. Ще ти стане по-ясно като погледнеш темата която ти посочих за защита - тя е в раздела за PHP най-отгоре отбелязана като важна.
 
ventsi_konov каза:
Ех, как го обърка човека.... този файл asd.txt си го правиш празен, а кода, който ти даде DobriMcConnor се инклудва. Ще ти стане по-ясно като погледнеш темата която ти посочих за защита - тя е в раздела за PHP най-отгоре отбелязана като важна.

Значи сега е хубаво да оставя и твоя код и да сложа и този нали ?
 
И някой, ако реши да пише ръчно номера на страницата и обърка без да иска натисне Shift и число и ОПА, записваме го и до там. За тази цел му е нужна проста филтрация на данните, не тези скриптове. Секване на целия сайт.
 
relax15pyt каза:
И някой, ако реши да пише ръчно номера на страницата и обърка без да иска натисне Shift и число и ОПА, записваме го и до там. За тази цел му е нужна проста филтрация на данните, не тези скриптове. Секване на целия сайт.


Тоест да него слагам това asd.php ?
 
Лично твой избор. Измислени са достатъчно функции и е създаден условен оператор да си правиш нужните проверки, за да не те прецакат.
 

Back
Горе