Nejste přihlášeni
Stránky 1
Vestavěné počítadlo příspěvků mi odhalilo dva průzkumy před útokem, možná i neúspěšný útok na prezentaci http://amavetmost.4fan.cz. Stalo se to třetího a osmého října tohoto roku (asi celkem zbytečná informace, že tohoto roku, tedy 2010, když prezentace byla založena teprve loni v prosinci).
Více informací v téma [PHP] Robot? na foru Živě.cz.
To jen tak pro informaci o jednom z (pravděpodobně) mnoha pokusů o útok na Endoru. Ale tím pachatelem jsem samozřejmě nebyl já sám - ledaže bych se rozhodl pro poněkud radikální test odolnosti. Jenže nejsem tak zručný programátor, abych toho byol schopen.
Offline
Robotom sa človek neubráni; je možné ich zastaviť javascriptom (vyplnením nejakého poľa, ktorý potom PHP formulár zistí, že je to robot a tak to ignoruje alebo upozorní správcu). Ak nezabudnite si ochrániť prezentáciu proti SQL Injection.
Portfólio
E-mail: eduard(at)karpiel.sk
Offline
Offline
Používám meta tag robotů. Ten samozřejmě asi moc účinný není. Soubor robots.txt jsem jen upravil z výpisu adresářů na zákaz všech. A používám i .htaccess. A pokud jde o obranu před SQL útokem, tam používám tuhle funkci
function Zneskodnit($Zadano)
{
global $Spojeni;
if (ini_get('magic_quotes_gpc'))
{
$Zadano = stripslashes($Zadano);
}
return mysql_real_escape_string(trim($Zadano), $Spojeni);
}
Je vypůjčená z knížky PHP a MySQL Názorný průvodce tvorbou dynamických WWW stránek.
Nepochybuji o tom, že by se ještě nějaké opatření dalo vymyslet. Ale jako první linie obrany to snad stačí.
Offline
kam presne roboti utocia?
tá funkcia je dobrá, aj keď magic_quotes bol zavrhnutý tak používam len mysql_real_escape_string; taktiež ak máte nejaký formulár vytvorte si ďalší INPUT (napr. input radio - som robot)a pomocou Javascriptu (document write) nastavte to radio na disabled - true.
Ak si neviete rady čo mám na mysli tak túto máte vysvetlené:
<form name="formular" action="spracuj-spam.php" method="post">
<!-- ... !>
<input type="radio" name="ROBOT" value="1" disabled="false" checked="true" /> Som robot?
<input type="submit" name="odoslat" value="Odošli" />
</form>
<script type="text/javascript">
document.formular.ROBOT.disabled=true;
docement.formular.ROBOT.checked=false;
</script>
Malo by to fungovať, ale netestoval som; najprv zistíte či je radio robot nezaškrtnuté a vypnuté; potom vypnite v nastaveniach JavaScript a zistíte či je teraz zapnuté a zaškrtnuté radio robot. Teraz prejdime na spracovanie:
// ... php kód
if($_POST["ROBOT"])
{
// sem napíšete kód ktorý spracuje robota (napr. presmeruje naspäť:)
// header("Location: index.php");
}
// ...
?>
Portfólio
E-mail: eduard(at)karpiel.sk
Offline
kam presne roboti utocia?
Roboti útočí na formuláře.
tá funkcia je dobrá, aj keď magic_quotes bol zavrhnutý tak používam len mysql_real_escape_string
O tom zavržení (alespoň doufám, že se v slovenštině význam neliší od významu v češtině) tedy čtu poprvé.
-->
Tak jo... od PHP 5.3.0.
Ovšem pokud tomu rozumím dobře, tak by ta funkce měla fungovat stále - vždyť jenom detekuje zapnuté magic_quotes a pokud zapnuté jsou, tak jen odstraní již vložená zpětná lomítka. A mimochodem, k tomu jsem si ještě z Texyly stáhnul podobnou funkci - která rovněž vypnutím magic_quotes poněkud ztrácí význam
function OdstraneniZpetnychLomitek()
{
if( get_magic_quotes_gpc() )
{
$Prenos = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);
while (list($NazevSkupiny, $RozmerSkupiny) = each($Prenos))
{
foreach ($RozmerSkupiny as $Nazev => $Hodnota)
{
unset($Prenos[$NazevSkupiny][$Hodnota]);
if( is_array($Nazev) )
{
$Prenos[$NazevSkupiny][($NazevSkupiny < 5 ? $Nazev : stripslashes($Nazev))] = $Hodnota;
$Prenos[] =& $Prenos[$NazevSkupiny][($NazevSkupiny < 5 ? $Nazev : stripslashes($Nazev))];
}
else
{
$Prenos[$NazevSkupiny][stripslashes($Nazev)] = stripslashes($Hodnota);
}
}
}
}
}
Offline
Vždyť tato druhá dělá v podstatě to samé co se děje v té podmínce první funkce. Také jí mám zařazenou před použitím té první funkce. Co se týká té záležitosti s JavaScriptem, asi je to jednodušší Captcha a podobné ověřovací mechanismy s obrázky.
Offline
To je v pořádku. Podmínka ve funkci Zneskodnit také způsobuje, že už se ten příkaz v podmínce neprovede.
Offline
Stránky 1