Dziękuję, skorzystałem trochę z prezentacji. Niektóre z zabezpieczeń tam pokazanych miałem zastosowanych już wcześniej.
Przyszedł mi jeszcze jeden pomysł do głowy.
Mam ustawionego crona na skrypt który co 10 minut wyszukuje z pośród kilku tysięcy rekordów te, spełniające warunek WHERE a następnie je edytuje i wykonuje UPDATE. To wszystko w pętli for.
Czy możliwe jest, że ten skrypt może powodować usuwanie danych?
Atak sql injection wydaje się coraz mniej prawdopodobny ponieważ rekordy nie znikają jakoś równomiernie tylko np raz w tygodniu poleci 100 rekordów a potem jest kilka dni spokoju i znów...
Próbowałem samodzielnie dokonać ataku sql injection na moją stronę lecz nie udało mi się to nawet zmieniając dane post w locie. W każdym formularzu jest addlsahes, mysql_escape_string oraz valint (jeżeli potrzeba).
Jeżeli można już wykluczyć atak poprzez formularz zamieszczam cały skrypt który jest uruchamiany przez crona, może zrobiłem w nim jakiś głupi błąd którego nie potrafię odnaleźć. (tak wiem, bałagan w kodzie ale działa prawidłowo)
Skrypt sprawdza wszystkie APLIKACJE. Jeżeli APLIKACJA ma STATYSTYKI=1 to wtedy wtedy skrypt sprawdza czy w tabeli STATYSTYKI znajduje się dj o nazwie $dj. Jeżeli istnieje to go edytuje dodając mu 10 minut. Jeżeli go nie ma to go utworzy i doda mu 10 minut.
<?php
// LACZENIE Z BAZA DANYCH
function connect()
{
include('database.php');
{
return false;
}
{
return false;
}
return $db;
}
$db = connect();
$zwieksz = 10; // ILE MINUT DODAWAĆ
$blokowac = 6; // PO ILU SPRAWDZENIACH BLOKOWAC
$zapytanie1 = "SELECT * FROM aplikacja WHERE statystyki>0 ORDER BY id ASC"; //pobranie rekordow
{
}else{
for ($sip=0; $sip<mysql_num_rows($wynik1); $sip++)
{
if($ip !== "" && $port !== "" && $haslo !== "")
{
$panelresult = "SELECT * FROM statystyki WHERE aplikacja='$idaplikacji' AND dj='$dj' AND miesiac='$miesiac'";
{
$zapytanielog = "INSERT INTO statystyki SET aplikacja='$idaplikacji', dj='$dj', minuty='$zwieksz', max='$ile', miesiac='$miesiac', stan='$stan'";
}else{
if($ile > $maxdj)
{
$max2 = $ile;
}else{
$max2 = $maxdj;
}
$suma = $minutydj+$zwieksz;
$zapytanie2 = "update statystyki set minuty='$suma', max='$max2' WHERE idaplikacji='$idaplikacji' AND dj='$dj' AND miesiac='$miesiac'";
}
if($dj == "off")
{
$io = $ileoffline+1;
$zmien = mysql_query("UPDATE aplikacja SET dzien='$dzien2', ileoffline='$io' WHERE id='$idaplikacji'");
if($ileoffline >= $blokowac && $dzien2 == $dzien)
{
$zmien = mysql_query("UPDATE aplikacja SET dzien='0', ileoffline='0', statystyki='0' WHERE id='$idaplikacji'"); // LOGI - ZAPIS
$datalog = date("H:i d.m.Y"); $zapytanielog2 = mysql_query("INSERT INTO logi SET apliakcja='$idaplikacji', login='<font color=\"red\">SYSTEM</font>', akcja='Zaktualizowano dj-a', data='$datalog', ip='system'"); }
}else{
if($ileoffline !== "0" || $dzien !== "0")
{
$zmien = mysql_query("UPDATE aplikacja SET dzien='0', ileoffline='0' WHERE id='$idaplikacji'"); }
}
}
$times2 = $times-$starttime;
if ($times2 > 120
){ echo "Przekroczono czas !"; break;} }
}
?>
Czy ograniczenie czasowe w skrypcie może mieć takie skutki?
Proszę o pomoc.