Nejste přihlášeni
Něco podobného se mi stalo kdysi (nějaký ten rok zpátky) u Webzdarma.
Řešení:
1. vlézt do FTP, soubory webu stáhnout a projít všechny soubory
2. jeden nebo i více souborů bude mít změněný obsah - myslím, že tam je text ve stylu skriptu jazyka JavaScript, který se bude snažit o přesměrování někam jinam - nebo něco takového
3. takto postižené soubory bez milosti nahradit novými (zálohou z vlastního počítače)
4. pokusit se zabezpečit web - .htacesss soubor, soubor robots.txt atd. - a možná změnit způsob vytváření výsledného HTML kódu (aby nebylo kam ten škodlivý kód vložit)
mezi námi, není lepší ten script spustit ručně?:)
Souhlasím, že to lze, ale je nutné ošetřit návštěvnost. Sám jsem si to vyzkoušel (samozřejmě velmi úspěšně ). Celý ten mechanismus ručního spouštění je totiž založen na tom, že v databázi bude tabulka, kde budou nejméně dva sloupce - datum provedení a co se má provést. Ovšem lepší je použít tři sloupce - datum provedení, akce a výsledek akce.
Datum provedení - je jasné, ale na úrovni PHP musí být dotaz, který bude směřovat od dneška (vzhledem k nějaké návštěvě) do minulosti, aby byly pokryty i dny bez návštěv. Jestli se akce z dne, kdy nebyla návštěva, vykoná či nikoliv, to si musí každý rozhodnout sám - ale záleží především na tom, o co vlastně jde.
Akce - vlastně nejde ani tak o název akce nebo dokonce celý její popis, jako spíš název sloupce, který bude měněn.
Výsledek akce - na jakou hodnotu bude obsah sloupce změněn.
Hlavně, když to nedopadne jako u Webzdarma - tzn. reklamní banner (navíc ve formě hodně nepovedené flashové animace) s odkazem vedoucím nikam.
Na Webzdarma jsem měl prezentaci (předchůdkyni té, kterou jsem zde založil v prosinci 2009) - a někdo se do ní přes ten banner naboural a do několika souborů (ale ne do databáze) vložil svůj kód. Takže jsem ty postižené soubory musel vyměnit za původní.
A to je věc, za kterou budu Endoře vždy vděčný - že se dala na reklamu cestou konkrétních odkazů - a ještě navíc ve formě prostých textových odkazů (tzn. bez obrázků a spol.).
Zdravím, mám takový dotaz:
jsou na endoře možné transakce a cizí klíče? A jsou dostupné všem - nebo je nutné použít některý z programů plus?
Jak napsat znak # ?
Klávesovou zkratkou "pravý alt + x"
nebo levý alt + číslo 35 (nebo levý alt + číslo 035)
VaclavMacurek:
Hlavní výhodou flash uploadu není zmíněný "hezký formulář" - ten se dá v HTML udělat také
Hezký file formulář v HTML? To by mne tedy zajímalo jak.
Vlastní file upload musí řešit server sám.
Jediné, co lze s flashem v tomto udělat je, trochu zkrášlit vlastní formulář - aby vypadal lépe, ale po kliknutí na výběr souboru se stejně objeví systémové okno - a po vybrání souboru se může objevit další formulář pro výběr souboru k uploadu (který bude mít tu lepší podobu).
Takto mají upload vyřešen na jobs.cz.
Při programování Kasandry 2 jsem se dostal do situace, kdy potřebuji cizí klíče (ony by snad až tak nutné nebyly, ale s nimi to bude výrazně jednodušší).
Na localhost používám XAMPP 1.7.7 (PHP 5.3.8, MySQL 5.5.16). Typ InnoDB mám povolený - a všechny tabulky (je jich 12, z toho nutně typ InnoDB potřebuje 7) jsou toho typu, tedy InnoDB (alespoň mi to PMA tvrdí).
Všechny pokusy o vytvoření tabulek již s cizími klíči - nebo dodatečné dodání těchto klíčů však končí chybou. Použil jsem příkaz SHOW ENGINE INNODB STATUS a v výstupu bylo:
LATEST FOREIGN KEY ERROR
------------------------
111109 18:49:15 Error in foreign key constraint of table cms@002dkasandra2/sekce_obsah:
FOREIGN KEY Znacka (Znacka) REFERENCES Sekce_ZakladniInfo (Znacka) ON UPDATE NO ACTION ON DELETE CASCADE ) ENGINE=InnoDB CHARACTER SET `latin2` COLLATE `latin2_czech_cs`:
Cannot resolve table name close to:
(Znacka) ON UPDATE NO ACTION ON DELETE CASCADE ) ENGINE=InnoDB CHARACTER SET `latin2` COLLATE `latin2_czech_cs`
... a když jsem ty cizí klíče zkusil nastavit ručně v PMA, hodil hlášku
Chyba při vytváření cizího klíče na Znacka (zkotrolujte typ pole)
V prvním případě zcela nechápu, co se podělalo - a v druhém, co má na mysli tím polem.
Má s tímto někdo zkušenosti? Mohl by mi někdo (konečně) poradit, co dělám blbě. Už jsem totiž tento problém začal řešit na foru zive.cz, prohledal jsem i internet, ale zatím bez úspěchu.
No, já jsem si na sitemap (ale v stále vyvíjené aplikaci) vytvořil jednoduchý skrip, který z databáze vyčte všechny veřejné sekce a vhodně je seřadí do jednoduchého stromu.
Ve věci nutnosti sitemapy je to takové divné - jednoduché weby jí podle mne vůbec nepotřebují (ledaže se přes ní dá dostat na sekce, které by jinak byly zablokovány neaktivním javascriptem). U složitějších je již jistě užitečná (ovšem musí být přehledná).
Třeba služba seo-servis.cz jí požaduje - a to dokonce snad jako samostatný soubor s názvem sitemap.* . Když je, dá nějaké body navíc, když ne, body nejsou. A protože prezentace, kterou tady na endoře hostuji (při troše hledání její adresu a určení najdete) žádný takový soubor nemá, tak má jen asi 80% - ale já na to kašlu.
Vážená Endoro,
je mi velmi líto, že to musím napsat, ale musím.
Je myslím na čase se trochu zamyslet nad formou reklamních e-mailů zasílaných na základě registrace.
Nedávno (konkrétně 17.8. 2011) jsem totiž obdržel takovýto e-mail:
Předmět: sorry za zpozdeni
Obsah:
Ahoj,
posílám slíbený odkaz, kde mi našli toho řemeslníka. http://rekonstrukce-koupelny.poptavka.cz,
měj se, Ondra
Mohl bych v nastavení posílání e-mailů zakázat, ale osobně mi ty reklamní e-maily až tak moc nevadí, protože nejsou rozesílány obzvláště často.
Ale forma obsahu mi docela vadí a myslím, že by to opravdu chtělo s tímto něco udělat. A já jsem ochoten a připraven s tím pomoci, pomoci s změnou formy obsahu.
Parman16: Je jedno, zda se kód <něco><endora></něco>, kde něco bude nejspíš div, vloží manuálně do každé stránky - nebo přes nějakou šablonu.
Jde o to, aby něco mělo v css zadáno color: white (nebo bych doporučil spíš světle žlutou, ale ne jakkoli sytou žlutou) a patřičnou velikost písma.
No, ten nejdůležitější prvek Kasandry 2, který měl být udělaný pomocí AJAXu jsem nakonec jako AJAX neudělal, protože mi pak správně nefungoval TinyScrollbar. Takže se ten prvek načítá jako nedílná součást výchozího HTML kódu.
Děkuji velmi moc ... asi bude lepší vložit tam kód pro umístění té reklamy s tím, že bude pomocí display: none skrytá - než používat to, co napsal Darker v tomto příspěvku. - tedy header(Content-Type: text/plain). I když to stejně asi budu muset použít, aby mi správně fungoval jiný AJAX.
Rozhodl jsem se druhou verzi Kasandry (jednoduché CMS, které pohání prezentaci mostecké pobočky AMAVETu - ale tam jde o první verzi) rozšířit o několik AJAXových záležitostí a protože vím už z dřívějška, že se reklama vkládá i do kódu získaného z AJAXu, tak mne napadl takovýto dotaz: jestli je možné tuto dodatečnou reklamu alespoň skrýt. Na hlavním místě (tedy v patě) ta reklama stejně zůstane jakkoli nezakrytá.
A navíc je ta reklama úplně nečitelná - ten tmavě modrý text na černém pozadí je opravdu velmi nečitelný.
Myslíte že bych si mohl reklamu nechat takto upravenou? viz: http://zlinkchecker.tk/
:?: Je mi líto, ale já tam žádnou reklamu, za kterou by byla Endora zodpovědná, nevidím. Snažil jsem se několikrát a najít jí i v zdrojovém kódu, ale ani tak jí tam prostě nevidím.
A určitě to není tím, že používám Firefox, konkrétně verzi 4.0, beta 8.
Myslim ze nette tu nekdo bez problemu pouzival
Tak už jsem dotyčnou osobu našel, ale nechodí sem už pár měsíců
Musím se prozradit (na základě soukromé zprávy mi poslané): Já to nejsem. Je sice pravda, že už sem tady pár měsíců nebyl (což odpovídá) - a to především proto, že nemohu sledovat úplně všechno.
Nette jsem měl staženo, ale jen proto, že jsem se na něj chtěl podívat - ale poté jsem jej zase smazal. To, co já používám, je můj vlastní šablonovací systém (resp. je to hybrid mezi šablonovacím systémem a klasickým prokládáním kódů) a na něm postavený můj vlastní jednoduchý RS - pojmenovaný CMS VMaX Kasandra 1 (jehož obrázkové logo je umístěno na spodním ohraničení textového pole).
Kódy obou těch produktů jsem (v případě zájmu) ochoten poskytnout. Přestože rozhodně nejsou dokonalé.
POSIXové funkce regulárních výrazů - divné, že amavetmost.4fan.cz funguje (a že nevypisuje chyby - i když jsem jejich zobrazování v .htaccess vědomě nevypnul), když tam mám použity téměř výhradně právě tyto funkce, které jsou od verze 5.3.0 zavržené.
To je v pořádku. Podmínka ve funkci Zneskodnit také způsobuje, že už se ten příkaz v podmínce neprovede.
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.
Pokud bude tento příspěvek moc mimo, tak může být smazán nebo přesunut do sekce Jen tak.
Já jsem svoji zatím jedinou prezentaci napsal pod PHP 5.2.6 tak, aby to fungovalo stoprocentně v té verzi 5.2.6 a přesto jsem nezjistil problémy s nekompatibilitou s vyšší verzí PHP, která je na Endoře. Ale asi tam nemám žádné chyby, které by verzi 5.3.3 vadily.
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);
}
}
}
}
}
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čí.
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.
Já rovněž žádný framework nepoužívám. Nette mám sice staženo, ale zatím jsem se nedostal k tomu, abych jej alespoň trochu prostudoval a podíval se, jestli má vůbec něco, proč by se mi jeho použití mohlo vyplatit - a zda by to ulehčení práce bylo tak výrazné.
Je však otázka, zda si můj vlastní šablonovací systém, který nepoužívá klasických šablon v podobě textových souborů s HTML kódem, ale místo toho každá z konkrétních tříd vytvoří určitý základní HTML kód*, označení framework zaslouží či nikoliv.
*
samotná libovolná značka
řádek tabulky (tr, td či div, div)
rozbalovací seznam
ještě by to pár základních HTML kódů jako je řádek tabulky nebo rozbalovací seznam chtělo, ale zatím se mi je nepodařilo vymyslet (najít).