Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: xyz 19. 10. 2014, 12:53:37

Název: Blokování 10 000+ IP adres na hostingu
Přispěvatel: xyz 19. 10. 2014, 12:53:37
Resim vykonovy problem s kterym si nevim rady.

V soucasnosti mam levny webhosting, kde mam moznost blokovat skrze

.htaccess
nebo skrze basePresenter moji aplikace v PHP (mam maximalne 5 php procesu v case)
nechtene IP adresy.

Zatim jich tam mam jen par desitek, takze vykonove nemam problem.
Ale uvedomil jsem si, ze budu potrebovat blokovat i TOR exit nody (cca 1000 IP), a verejne proxy servery cca 8000 IP.

kdyz to cele dam do .htaccess, tak to tim asi hodne zpomalim.
v PHP mi zase chybi neco jako je v Pythonu set  pro velmi rychle hledani v unikatni kolekci.

Dalo by se to nejak rozumne resit bez toho abych prechazel na vlastni vps?




Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: JardaP . 19. 10. 2014, 13:13:17
Jestli tam mate Linux: http://www.root.cz/clanky/ipset-odlehcete-pretizenym-iptables . Snad je jedno, kde to blokujete.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: xyz 19. 10. 2014, 13:17:51
sdileny webhosting = nemam tam roota. Jsem zakaznik
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Lol Phirae 19. 10. 2014, 13:24:06
Kup si VPS.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: xyz 19. 10. 2014, 13:25:37
koukam, ze to ani nectete cele.

Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Lol Phirae 19. 10. 2014, 13:36:25
Jo, čtu to celé... voni tě z toho levného sdíleného hostingu brzo vykopnou, takže to pochopíš sám.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: xyz 19. 10. 2014, 13:48:48
Jasne! moje aplikace ma asi tak 2x rychlejsi execution time nez bezne hostovane prasarny typu WP a Joomla. A jediny o co se snazim, aby to tak zustalo.

uz zadnej zbytecnej offtopic.
nic te nanapada? tak nepis.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Rejpal 19. 10. 2014, 13:57:43
Kup si VPS. Chápu, že cenový rozdíl mezi hostingem a vpskou v hodnotě dvou piv měsíčně je docela dost.

OT: Osobně mám zase problém se zabezpečením kola. Nechci, aby mi ho na ulici, když jsem v práci, v obchodu, kině..., ukradli. Známí říkali, že si mám pořídit na kolo zámek, ale já si ho prostě nechci kupovat. Poradíte mi někdo jak rozumně a bezpečně někde nechat kolo?
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: JardaP . 19. 10. 2014, 14:29:17
Kup si VPS. Chápu, že cenový rozdíl mezi hostingem a vpskou v hodnotě dvou piv měsíčně je docela dost.

OT: Osobně mám zase problém se zabezpečením kola. Nechci, aby mi ho na ulici, když jsem v práci, v obchodu, kině..., ukradli. Známí říkali, že si mám pořídit na kolo zámek, ale já si ho prostě nechci kupovat. Poradíte mi někdo jak rozumně a bezpečně někde nechat kolo?

Ano, s tim ti poradim. Privaz k tomu kolu dve zle, hosmdesatikilove dogy. Akorat je musis vytrenovat, aby zustaly na miste, kdyz jim das povel, aby ti s tim kolem neutekly. Je to mnohem spolehlivejsi nez nejaky zamek, ale prodrazi se to na zradle.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: McFly 19. 10. 2014, 14:38:21
Tor exit nody můžeš kontrolovat snadno v PHP, nemusíš si nikde vést seznam. Poslední čas řeším problém se spamujícími zombie stroji na netu, ty se snažím detekovat pomocí  http://www.stopforumspam.com/usage - bohužel je tam i pár false positive nálezů. :-/
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: xyz 19. 10. 2014, 16:00:47
Tem co radili VPS ┌∩┐(◣_◢)┌∩┐   >:(

Ted jsem si to zmeril.
V PHP nacteni 11 000 IP adres z textoveho souboru do pole + zjisteni, jestli se v nich nachazi/nenachazi nejaka IP tam zabere 3 - 5 ms

27 tisic adres  - 7ms
111 tisic adres - 30ms

Vzhledem k tomu, ze potrebuju blokovat kolem tech 10k, to muzu klidne mit v PHP.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Žirafa 19. 10. 2014, 16:11:39
No, vždycky to můžeš zkusit a pak zjistit, zda se to projevilo na výkonu. A pokud se to na zátěži serveru projeví, tak můžeš očekávat, že tě opravdu z toho hostingu pošlou pryč (a nebo budou chtít připlatit).

Další možnost je to ošetřit ve tvé webové aplikaci. Pokud máš adresy (string nebo integer) a chceš kontrolovat, zda daná proměnná není v zakázané množině, existuje hodně způsobů:


A proč vlastně chceš / potřebuješ blokovat TORy a VPNka? Na to je nějaký zákon nebo speciální požadavek?
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Lol Phirae 19. 10. 2014, 17:06:39
┌∩┐(◣_◢)┌∩┐   >:(

Ted jsem si to zmeril.

No, to na tom nejseš nic moc, ale nezoufej, prej to většinou není až tak zásadní.  ;D
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Ondřej Caletka 19. 10. 2014, 17:49:31
v PHP mi zase chybi neco jako je v Pythonu set  pro velmi rychle hledani v unikatni kolekci.
Jako set se chovají klíče v asociativním poli. Takže třeba nadefinovavat každou zablokovanou IP adresu jako klíč do pole a pak je vyhledávat.

Kód: [Vybrat]
<?php
$blacklist 
= [ "192.0.2.1" => True"192.0.2.2" => True, ];
echo 
array_key_exists("192.0.2.1"$blacklist);
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: andy 19. 10. 2014, 19:34:27
Co potrebujes je identifikovat, ci ma danu ip cenu testovat. Cize napr. keby si mal 4 bitove polia dlzky 256 bitov a kazdy bit nastavis na 1 ak v danom zozname existuje ip s takou hodnotou oktetu (cize mas ip 10.0.0.2, tak nastavis v prvom 10.bit a vo stvrtom 2.bit) tak uz vies, ze existuje moznost takej kombinacie (a teda grepujes subor s ip, pripadne robis select do db kde mas indexy). Ak to tam nemas, tak urcite neexistuje. To je len tak prvy napad...ale mrkni na bloom filter. Neviem sice ako funguje, ale riesi nieco podobne.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Jenda 19. 10. 2014, 20:29:08
Co potrebujes je identifikovat, ci ma danu ip cenu testovat. Cize napr. keby si mal 4 bitove polia dlzky 256 bitov a kazdy bit nastavis na 1 ak v danom zozname existuje ip s takou hodnotou oktetu (cize mas ip 10.0.0.2, tak nastavis v prvom 10.bit a vo stvrtom 2.bit) tak uz vies, ze existuje moznost takej kombinacie (a teda grepujes subor s ip, pripadne robis select do db kde mas indexy).
Takhle si snadno brzy nastavíš úplně všechny bity na jedničku a jsi tam, kde jsi začal.

Mnohem lepší by mi přišlo udělat si bitmapu Bčkových (64 Kib) nebo Cčkových (16 Mib) sítí a koukat do toho.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Filip Jirsák 19. 10. 2014, 21:22:36
Zkoušel jste, jak "pomalé" bude to blokování přes .htaccess? Já bych odhadoval, že režie spouštění PHP interpretu bude mnohem větší, než použití běžného asociativního pole v PHP pro vyhledávání těch IP adres, a nejspíš i větší, než ten .htaccess. Jinými slovy, pokud vám stačí sdílený webhosting, nemusíte vymýšlet nic speciálního, protože úzké hrdlo vaší aplikace bude mnohem dřív úplně někde jinde, než ve vyhledávání blokovaných IP adres.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Jimm 19. 10. 2014, 21:51:50
Já nemohu přijít na to, proč tohle dělat... Může mi někdo prosím vysvětlit, kdy má tohle cenu?
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: JardaP . 19. 10. 2014, 22:06:08
Já nemohu přijít na to, proč tohle dělat... Může mi někdo prosím vysvětlit, kdy má tohle cenu?

To je proti teroristum. Jedine ti se prece pripojuji pres TOR a proxy.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: andy 19. 10. 2014, 22:09:06
Co potrebujes je identifikovat, ci ma danu ip cenu testovat. Cize napr. keby si mal 4 bitove polia dlzky 256 bitov a kazdy bit nastavis na 1 ak v danom zozname existuje ip s takou hodnotou oktetu (cize mas ip 10.0.0.2, tak nastavis v prvom 10.bit a vo stvrtom 2.bit) tak uz vies, ze existuje moznost takej kombinacie (a teda grepujes subor s ip, pripadne robis select do db kde mas indexy).
Takhle si snadno brzy nastavíš úplně všechny bity na jedničku a jsi tam, kde jsi začal.

Mnohem lepší by mi přišlo udělat si bitmapu Bčkových (64 Kib) nebo Cčkových (16 Mib) sítí a koukat do toho.

Mozno, ale to bol iba taky nastrel. Treba si spocitat pravdepodobnost false positives a podla toho sa rozhodnut. Moze si niekto spravit ako cvicenie, aby nebolo luto, ze sa ucil matiku a v it to nevyuzije :).

Pri 10000 si to ale nahraj do db a mas to vyriesene. Ten 1 select navyse nikomu nebude vadit...
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Jenda 20. 10. 2014, 02:05:59
Mozno, ale to bol iba taky nastrel. Treba si spocitat pravdepodobnost false positives a podla toho sa rozhodnut. Moze si niekto spravit ako cvicenie, aby nebolo luto, ze sa ucil matiku a v it to nevyuzije :).
Tvoje bitové pole bude mít 4*256 = 1024 bitů a on chtěl blokovat 10000 počítačů, tedy 10x víc. Tak to tam kolizí asi bude dost :)

Souhlasím, že nejjednodušší bude prostě dotaz do DB. A nezapomenout mít na tom sloupečku index
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: mulkvisti 20. 10. 2014, 04:04:17
Co v databázi ukládat IP adresu jako int(10) unsigned a použít fce INET_NTOA() a INET_ATON()?
Nebude vyhledání čísla rychlejší, nebo je to jedno?

Kód: [Vybrat]
mysql> SELECT INET_ATON('192.0.0.2'), INET_NTOA('3221225474');
+------------------------+-------------------------+
| INET_ATON('192.0.0.2') | INET_NTOA('3221225474') |
+------------------------+-------------------------+
|             3221225474 | 192.0.0.2               |
+------------------------+-------------------------+
1 row in set (0.00 sec)
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Kolemjdoucí 20. 10. 2014, 08:21:41
Nebude vyhledání čísla rychlejší, nebo je to jedno?
Kód: [Vybrat]

Teoreticky rychlejší bude, prakticky záleží jak se s tím autoři DB poperou. Rozhodně ale musí být na sloupečku index.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Kolemjdoucí 20. 10. 2014, 08:28:06
Co v databázi ukládat IP adresu jako int(10) unsigned a použít fce INET_NTOA() a INET_ATON()?

A IPv4 adresa má přesně 32 bitů, tedy bude stačit normální databázový INTEGER 32 bitů.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: andy 20. 10. 2014, 08:36:28
Tvoje bitové pole bude mít 4*256 = 1024 bitů a on chtěl blokovat 10000 počítačů, tedy 10x víc. Tak to tam kolizí asi bude dost :)

Souhlasím, že nejjednodušší bude prostě dotaz do DB. A nezapomenout mít na tom sloupečku index
Z tohoto vidiet, ze to nechapes (resp som to zle vysvetlil). Nejde o lookup tabulku ale o pravdepodobnostny algoritmus na zistenie, ci sa oplati pozerat do suboru/databazy. Kolizia s cislom zo zoznamu tam bude vzdy, lebo to chces. Trapit ta budu kolizie s IP ktore tam nie su. Ak tam kolizia nebude, tak urcite tato IP nie je v zozname.
Pozeral som ten bloom a je to +/- toto. Pouziva sa to napr v cassandre na minimalizaciu diskovych pristupov. Chceme vediet, ci je nejaka hodnota v mnozine hodnot. Zobereme k hashov a dostatocne dlhe bitove pole (hash je tu nejaky jednoduchy, ziadne md5, sha..). Zahashujeme kazdu hodnotu k hashmi a nastavime vysledok v poli na 1. Ak teraz pride hodnota a vsetkych k hashov je na 1, tak je pravdepodobnost, ze hodnota je v mnozine. Ak je 1 bit na 0, tak tam prvok urcite nie je. Na toto pozname aj vzorceky pravdepodobnosti (teda ake dlhe musi byt to pole na nejaku p), takze staci iba dosadit..
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Filip Jirsák 20. 10. 2014, 08:49:13
Co v databázi [myšleno MySQL] ukládat…
Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Kolemjdoucí 20. 10. 2014, 09:04:19
Zobereme k hashov a dostatocne dlhe bitove pole (hash je tu nejaky jednoduchy, ziadne md5, sha..). Zahashujeme kazdu hodnotu k hashmi a nastavime vysledok v poli na 1.

Kvalita bude růst s délkou hashe, čím víc bitů tím přesnější odhad to bude poskytovat.
1024-bit hash bude fungovat poměrně dobře, 1 bit představuje 4*1024*1024 IP adres.
To znamená že když bude v bitovém poli 0, vím, že tyto 4 miliony IP tam určitě nejsou.

Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: pjoter 20. 10. 2014, 09:44:13

Ted uz to jenom zmerit  ;)
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: j 20. 10. 2014, 12:32:14
Já nemohu přijít na to, proč tohle dělat... Může mi někdo prosím vysvětlit, kdy má tohle cenu?

To je proti teroristum. Jedine ti se prece pripojuji pres TOR a proxy.

Tj, takze ocekavam, ze bude prodavat plutonium a dalsi potrebnou vybavu. A co teprv, az mu na to nekdo posle DDOS, to bude vypisovat do .htaccess pulku internetu.

2pjoter: pokud ti jde o DOS, tak je spatne uplne vsechno, protoze vsehcno splni ucel vycucat ti vykon. Naopak, tahle kravovina mi umozni ti ten srv vycucat daleko snaz, nez browsenim po webu.  Na strane utocnika staci generovat dost req a srv tim slozi zcela spolehlive.

By me fakt zajimalo, co to ma bejt za uber web, bezici na nejakym freehostingu, kterej potrebuje zjistovat, z jaky IP tam kdo leze ... lol.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: andy 20. 10. 2014, 13:23:13
Neviem preco tu chcete mat silou mocou index. Staci mat tu tabulku utriedenu (kedze je takmer konstantna a mala, tak to nie je problem). Potom sa vam na index vykasle aj samotna db.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Jan Ťulák 20. 10. 2014, 14:37:24
By me fakt zajimalo, co to ma bejt za uber web, bezici na nejakym freehostingu, kterej potrebuje zjistovat, z jaky IP tam kdo leze ... lol.
Asi chce začít točit porno a nechce, aby na něj mohl koukat někdo, kdo ho zná... tak omezí přístup z čr a pro jistotu i TOR... :D
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: asdasd 20. 10. 2014, 15:01:27
Co v databázi [myšleno MySQL] ukládat…
Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Ked si nechcete v PHP implementovat DB, seekovanie a chcete mat zoznam IP dobre spravovatelny, tak si treba pri kazdom spusteni nacitat blokovane IP. Moze sa nad nimi postavit nejaka hashtabulka alebo strom, ale stale sa to bude robit pri kazdom spusteni.

Databaza bezi stale a tak si to moze cele drzat v RAM a efektivne prehladavat. To nacitanie sa spravi raz pri prvych requestoch.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Filip Jirsák 20. 10. 2014, 15:38:38
Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Stejně tak se musí při každém požadavku navázat spojení do databáze. Což bude trvat dýl, než samotné vyhledávání IP adresy. Pokud už by si to tazatel chtěl řešit vlastnoručně, může mít data v souboru v binárním formátu vhodném pro prohledávání, a při častém přístupu k souboru bude ten soubor v RAM držet cache operačního systému.

Jak už jsem ale psal, s rostoucí zátěží aplikace narazí mnohem dřív na limity plynoucí z toho, že jde o sdílený webhosting, než na problém s vyhledáváním těch IP adres.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Někdo 20. 10. 2014, 16:06:26
Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Stejně tak se musí při každém požadavku navázat spojení do databáze.

To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Filip Jirsák 20. 10. 2014, 16:22:25
To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Někdo 20. 10. 2014, 16:24:01
Pokud už by si to tazatel chtěl řešit vlastnoručně, může mít data v souboru v binárním formátu vhodném pro prohledávání, a při častém přístupu k souboru bude ten soubor v RAM držet cache operačního systému.

Když už někoho takové nápady napadají tak by měl mít dost sebereflexe k tomu aby je veřejně nepublikoval! Diskovou cache OS nemá programátor pod kontrolou, proto by na ni neměl spoléhat! Navíc opakovaně alokovat a zahazovat paměť na načítání dat ze souboru (i když se podaří aby to bylo z diskové cache) není nic efektivního! Civilizované řešení je přeci načtení ze souboru (nebo z databáze nebo odkudkoliv to bude vhodné) do paměti při startu aplikace (nebo i v případě nutné změny), soubor ať je v jakémkoliv rozumném formátu, data budou při načítání ze souboru uložena do sdílené datové struktury vhodné pro vyhledávání a zpřístupněna pro zpracování jednotlivých požadavků (OOP hlásá že by mělo jít nikoliv o sdílenou datovou strukturu ale o objekt).
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Někdo 20. 10. 2014, 16:26:04
To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.

I to mám ve své odpovědi podchycené - jde o tu část ve které se vyskytuje slovní spojení "tupé demo".
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 22. 10. 2014, 14:27:22
Startování PHP je daleko dražší operace, než konexe do mysql. Takže v okamžiku, kdy se startuje PHP, tak je to jedno - nejdražší bude start PHP procesu a nějaká další vopičárna je jedno. V okamžiku, kdy se používá nějaké fastcgi, tak jsou čásy následující:

 1.6593210697174 -  10000 dotazů do pole načteného ze souboru
1.551509141922    - 10000 dotazů do databáze
 1.1013481616974 - 10000 dotazů do databáze používající pconnect

Soubor je tedy jednoznačně pomalejší než databáze. Kód (v databázi i v souboru je 1000 ip):

Kód: [Vybrat]
<?
$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $out=file('out.txt');
  $out=array_flip($out);
  $res=key_exists('1.2.3.4', $out);
}
echo microtime(true) - $a;

$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $q=mysqli_connect('','','','test');
  $res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
  $res=$res->fetch_row()[0];
}
echo microtime(true) - $a;

echo "\n<br>\n";

$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $q=mysqli_connect('p:localhost','','','test');
  $res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
  $res=$res->fetch_row()[0];
}
echo microtime(true) - $a;

echo "\n<br>\n";


                                 
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: Filip Jirsák 22. 10. 2014, 15:20:18
I to mám ve své odpovědi podchycené - jde o tu část ve které se vyskytuje slovní spojení "tupé demo".
A proč to píšete do téhle diskuse, kde se bavíme o sdíleném webhostingu? Pokud by to tazatel řešil na vlastním serveru, který má plně pod kontrolou a může tam provozovat PHP jako modul, tak se na tohle vůbec neptá.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 22. 10. 2014, 16:12:06
A tím chceš říct, že sdílené php hostingy spouštějí pro každej request novej php proces?
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Trupik 22. 10. 2014, 17:49:05
Mne sa na takýto jednoduchý lookup veľmi osvedčil DB4 skrze DBA extension: http://php.net/manual/en/book.dba.php (http://php.net/manual/en/book.dba.php)
Ukladá do súboru dvojice key => val ako v PHP poli, ale nezavadzia to v pamäti. Pripojenie na čítanie je bleskové, lebo nepotrebuje riešiť zamykanie.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: JardaA 22. 10. 2014, 21:44:57
Zatim jich tam mam jen par desitek, takze vykonove nemam problem.
Ale uvedomil jsem si, ze budu potrebovat blokovat i TOR exit nody (cca 1000 IP), a verejne proxy servery cca 8000 IP.

Nejsem specialista na Tor, ale neni tech vystupnich uzlu o hodne vice? Na nize uvedenem odkazu se uvadi aktualni pocet cca 6400.

https://www.dan.me.uk/tornodes

PS: Neslo by zrusit kontrolni otazku "Ve kterém měsíci proběhla sametová revoluce?"
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Někdo 22. 10. 2014, 22:24:21
A tím chceš říct, že sdílené php hostingy spouštějí pro každej request novej php proces?

Podle mě je Filip Jirsák úplně mimo a s php hostingem nemá vůbec žádnou praktickou zkušenost. Stojím si za tím že spouštět nový php proces pro každý request je dobré pouze pro tupé demo, v praxi nepoužitelné.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 23. 10. 2014, 06:58:04
Stojím si za tím že spouštět nový php proces pro každý request je dobré pouze pro tupé demo, v praxi nepoužitelné.
Co kdybyste místo toho, jak to asi nefunguje, raději popsal, jak to tedy podle vás funguje? Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 23. 10. 2014, 12:14:26
Filip:
- Přinejmenším některé hostingy pravděpodobně mod_php používají. Např. tento ho prokazatelně používal:
http://www.cesky-hosting.cz/pro-zakazniky/odstavky-a-vypadky/2005.html
a ze současné konfigurace je vidět, že u toho pravděpodobně zůstal (u jakékoli jiné konfigurace není důvod mít na jednom serveru pouze jednu verzi PHP)
www.cesky-hosting.cz/pro-zakazniky/napoveda/php-4-5-mysql-4-5.html#zmena-pouzivane-rady-php-mysql

- I kdyby nepoužívali mod_php, tak jaksi i v jakémkoli *CGI módu (mimo samotný CGI) normálně persistentní konexe fungují

- Co kdybys místo mlžení se snažil říci nějaká fakta (např. většina sdílených hostingů používá technologii XY, ve které nefungují persistentní konexe protože YZ). Že to bude jako v tom vláknu o autorských právech - v okamžiku, kdy jsem od Tebe chtěl jasné vyjádření, z kterého by bylo jasně vidět, jaké tvrdíš blbiny, taks po pár pokusech se odpovědi vyhnout jsi z diskuse zmizel.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Jetset 23. 10. 2014, 15:25:14
Kdyz prevedes adresy na 32 bitova cisla, seradis je a pak budes hledat metodou puleni intervalu, tak pri 16Ki adresach budes potrebujes maximalne 14 porovnavani a vis, jestli ji mas nebo ne. To bude tak rychle, ze nema smysl kvuli tomu volat SQL. Tabulka bude mit 64KiB, to je srovnatelne s delkou vetsiho programu v PHP, takze rychlost jejiho nacteni bude taky pomerne velka. Pokud ji misto cteni jenom namapujes do pameti, bude to pravdepodobne jeste rychlejsi. Vzhledem k tomu, ze pokud se to bude pouzivat casto, bude stejne v cache, to znamena, ze namapovani teto tabulky do pameti bude vlastne jenom inicializace tabulek v memory manageru. Ale nevim, jestli to PHP umoznuje.


Podepisuji se pod petici o zruseni blbych otazek v overovaci. Za chvili tam budou i otazky ve kterem roce byl 15 sjezd KSC a jestli se ho osobne zucastnil i Lenin :-)
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 23. 10. 2014, 18:37:58
Přinejmenším některé hostingy pravděpodobně mod_php používají.
On už umí mod_php fungovat v režimu suExec, tedy že se pro každý požadavek změní efektivní UID na daného uživatele? Nebo "sdílený webhosting" znamená, že zákazníci spolu sdílí i všechna data a skripty?

jaksi i v jakémkoli *CGI módu (mimo samotný CGI) normálně persistentní konexe fungují
To, že je něco technicky proveditelné, je to zapnuté, a prakticky se to použije, jsou tři různé věci. To má ten sdílený webhosting v poolu navázaná spojení pro všechny uživatele? Nebo má navázaná anonymní spojení, která se musí při každém požadavku přihlásit?

Co kdybys místo mlžení se snažil říci nějaká fakta (např. většina sdílených hostingů používá technologii XY, ve které nefungují persistentní konexe protože YZ).
Co používá většina sdílených hostingů je celkem jedno. I kdyby měl ten hosting v poolu navázaná spojení do databáze, která už prošla autentizací, pořád musíte poslat do databáze požadavek (nejspíš po síti), databáze jej musí rozparsovat, vyhledat v indexu, vrátit odpověď (opět nejspíš po síti), klient musí vytáhnout data z odpovědi - a má výsledek. Když to porovnáte s řešením bez databáze (vyhledat v indexu a má výsledek), zjistíte, že řešení s databází dělá všechno, co řešení bez databáze, a k tomu ještě spoustu dalších věcí. Které se zkrátka nestihnou udělat v nulovém čase.
Ten sdílený webhosting k tomu už jenom dodává další zdržení, protože těžko bude optimalizován na velmi rychlé vyřízení několika typický dotazů (na to jsou optimalizovány třeba CDN), ale naopak je optimalizován na to, že každý požadavek je úplně jiný a mezi požadavky na jeden web je naopak větší prodleva. Takže zrovna držet v poolu autentizovaná spojení do databáze může být kontraproduktivní.

Že to bude jako v tom vláknu o autorských právech - v okamžiku, kdy jsem od Tebe chtěl jasné vyjádření, z kterého by bylo jasně vidět, jaké tvrdíš blbiny, taks po pár pokusech se odpovědi vyhnout jsi z diskuse zmizel.
Chcete diskutovat o tématu, nebo si chcete vymýšlet báchorky?
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Trupik 24. 10. 2014, 07:41:01
Filip: prevádzkujeme zdieľaný hostingový server od roku 2005, normálne na mod_php, so stovkami zákazníkov. Aby si ľudia nevideli súbory, na to je v PHP open_basedir. Je potrebné sa trochu pohrať s konfiguráciou a zakázať niektoré funkcie, ale tie by si musel zakázať aj pri CGI. Tvoj predpoklad, že sa to nedá, je jednoducho mylný.

Iná vec je, že pconnect je v takom prípade na houby, pretože každý request obsluhuje iný apache a tak sa potrebuje zakaždým pripájať na inú DB. Pri používaní perzistentných spojení by si za chvíľu došiel k tomu, že každý apache bude pripojený na každú databázu. Príklad: pri 200 databázach a 50 apačoch by to bolo 10.000 spojení na databázu. Toľko Ti databázový server nedá a aj keby dal, tak dopady na spotrebu prostriedkov systému budú horšie než nadväzovať spojenie vždy odznova.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 24. 10. 2014, 08:17:37
Aby si ľudia nevideli súbory, na to je v PHP open_basedir. Je potrebné sa trochu pohrať s konfiguráciou a zakázať niektoré funkcie, ale tie by si musel zakázať aj pri CGI. Tvoj predpoklad, že sa to nedá, je jednoducho mylný.
Můj názor je, že tímto způsobem se to bezpečně udělat nedá. Musíte zakázat některé funkce – opravdu si si vzpomenete úplně na všechny? A kontrolujete to s každou aktualizací? Pak se rozhodnete, že zákazníkům povolíte cron, nebo vedle FTP i SSH, nebo cokoli jiného – a budete vše znovu kontrolovat, zda neexistuje nějaká kombinace, jak to obejít? Pro řízení přístupu k souborům jsou určena přístupová práva na úrovni operačního systému, operační systém to hlídá a dělá to dobře. Nevěřím tomu, že to PHP dělá stejně dobře.

Když se dívám na CVE:

Váš předpoklad, že se to dá zabezpečit, shledávám mylným.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Trupik 24. 10. 2014, 15:07:37
Keď tu začnem pastovať CVE-čka k linuxovému jadru, bude z toho vyplývať, že hosting sa nedá zabezpečiť nad servermi s Linuxom?

...

Áno, treba sa o to starať, robiť updaty, kontrolovať konfigurácie. To ale nie je žiadne špecifikum zdieľaného hostingu či mod_php. To pokladám za nutnú podmienku toho, aby vôbec človek mohol mať kľudné svedomie, keď pripája nejaký server na internet.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 24. 10. 2014, 15:43:37
Citace
On už umí mod_php fungovat v režimu suExec,...?
Neumí. Bezpečnost se řeší jinak. Úroveň bezpečnosti je nižší, ale dostatečná na to, jak levné hostingové programy se na takovém webhostingu provozují. To, že se ptáš na takové základní věci jen ukazuje, že kecáš do věcí, o kterejch nic nevíš.

Citace
2)To, že je něco technicky proveditelné, je to zapnuté, a prakticky se to použije, jsou tři různé věci.
To co jsi tvrdil bylo: "Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet." Tak jsme Ti ukázali, že zaprve evidetnně na sdíleném hostinu je normální běžet na mod_php, kde se PHP nestartuje vůbec, a že při řešení s FastCGI se taktéž PHP nestartuje pokaždé znova. Prostě to cos tvrdil byla nepravda a ukazuje to, že naprosto netušíš, jak jsou postavené normální hostingy. Teď se jen vykrucuješ a snažíš se to cos předtím říkal, překroutit a tvrdit, že je zakázaný pconnect. V tom máš pravdu, že to na některých hostingách je, ale jsou hostingy, kde pconnect vyladit a použít umí, např.

https://github.com/bradleyboy/webhost-whois/issues/2
https://webhosting.vse.cz/info/informace/technicke-informace/?print=yes

Což je i odpověď na tvojí povýšenou otázku: Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.

Základ je ale to, že jsi se snažil tvrdit, že na sdíleném hostingu se vždycky spouští nový php proces, což prostě není velmi často pravda a ukazuje to, že kecáš do věcí, o kterejch nic nevíš.

Citace
> jaksi i v jakémkoli *CGI módu
To má ten sdílený webhosting v poolu navázaná spojení pro všechny uživatele? Nebo má navázaná anonymní spojení, která se musí při každém požadavku přihlásit?
Z položené otázky je jasné, že
1) nevíš, jak fungují persistentní mysql konexe v PHP. Nastuduj si to třeba tady: http://php.net/manual/en/features.persistent-connections.php
2)  Nevíš, jak se nastavuje webhosting funguje v režimu *CGI. Tam se to zabezpečuje tak, že každému uživateli běží FastCGI proces pod jeho uživatelem, takže nějakej pool společnejch konexí by nemohl fungovat, i kdyby to PHP umělo. Tvé otázky jen ukazují, že o věci nevíš vůbec, ale vůbec nic, jen děláš chytrýho.

Jestli se ptáš, jak je to udělaný v praxi, tak např. tak, že FastCGI skripty maj krátkou dobu životnosti, která zaručí, že opakované dotazy z těch pár vytížených webů (u kterých o výkon jde) - a např. ze site, který zrovna prolejzá nějakej webcrawler - pojedou z poolu procesů, které si budou držet konexi do DB, zatímco takoví Ti běžní uživatelé (pět dotazů za den) fungujou v podstatě stejně jako CGI.

Citace
A proč to píšete do téhle diskuse, kde se bavíme o sdíleném webhostingu...?
.....
.....
Co používá většina sdílených hostingů je celkem jedno.
Je krásné, jak umíš během dvou příspěvků naprosto popřít to, číms argumentoval předtím....

Citace
... I kdyby měl ten hosting v poolu navázaná spojení do databáze, která už prošla autentizací, pořád musíte poslat do databáze požadavek (nejspíš po síti), databáze jej musí rozparsovat, vyhledat v indexu, vrátit odpověď (opět nejspíš po síti), klient musí vytáhnout data z odpovědi - a má výsledek. Když to porovnáte s řešením bez databáze (vyhledat v indexu a má výsledek), zjistíte, že řešení s databází dělá všechno, co řešení bez databáze, a k tomu ještě spoustu dalších věcí. Které se zkrátka nestihnou udělat v nulovém čase.
Opět jen ukazuješ neschopnost diskutovat. Toto tvrzení jsi již jednou předložil a já Ti ho vcelku jasně vyvrátil provedeným testem, který dopadl pro mysql lépe než pro řešení v php. Důkaz ignoruješ a furt dokolečka opakuješ své nepravdy.

Nu a jinak tam máš spoustu nepřesností: dneska se virtualizuje, takže db a php běží na jednom stroji, takže žádné síťové latence - opět kdybys znal realitu webhostingu, tak takovou blbost nenapíšeš. Také ignoruješ mysql má query cache (takže žádné parsování dotazu) - navíc řešení napsané v php se parsovat musí úplně stejně. Také jsi zapoměl na takový drobný detail, že v řešení bez databáze musíš ten index nějak do paměti dostat, zatímco mysql ho v paměti má. Atd... Zanedbáváš tolik "detailů", že z toho je něco jako důkaz, že vlak drncá: http://vtipy.yin.cz/o-policajtech/26/proc-vlak-na-kolejich-drnca/

Ale to je vcelku jedno - debata o každém jednotlivém nesmyslu v Tvojí argumentaci by byla asi podobně plodná, jako debata o autorských právech, podstatné je, že v Tvé ohnuté realitě to možná pomalejší být musí - ale ve skutečné realitě test ukázal, že řešení s databází je rychlejší, i když tvrdíš opak.

Citace
Chcete diskutovat o tématu, nebo si chcete vymýšlet báchorky?
Báchorky? Ty chceš popřít, že jsi opustil diskusi poté, co jsem trval na tom, abys zodpověděl jednoduché otázky? (které podle mne ukazovaly rozpor v tom, cos tvrdil - a evidentně jelikož jsi udělal všechno pro to, abys na ně neodpověděl, tak si to nemyslím sám....)
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 24. 10. 2014, 16:56:18
Keď tu začnem pastovať CVE-čka k linuxovému jadru, bude z toho vyplývať, že hosting sa nedá zabezpečiť nad servermi s Linuxom?
Já jsem neodkazoval na jen tak nějaká náhodně vybraná CVE, ale na ta, která popírají, že PHP umí oddělit uživatele i bez oddělených systémových účtů.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 24. 10. 2014, 16:59:33
Takže jste potvrdil to, co jsem psal já. Akorát se těmi indexy je to trochu jinak, v případě indexu databáze i čtení z indexu z disku přímo PHP mohou být data jak nakešovaná v RAM tak na disku, a programátor aplikace to přímo neovlivní. Záleží to na heuristikách OS a databázového serveru, zda odhadnou, že se hodí ta data kešovat v paměti.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: vana-hb 25. 10. 2014, 07:51:36
Už to tu určitě zaznělo, ale člověk co provozuje tak důležitou aplikaci že je nutné blokovat anonymní proyservery a velké rozsahy adres by měl používat vps s iptables. Věřím, žš pro tak dležitý projekt nebude pár stokorun (dolarů) za měsíc žádný problém.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Lol Phirae 25. 10. 2014, 09:40:46
Tvé otázky jen ukazují, že o věci nevíš vůbec, ale vůbec nic, jen děláš chytrýho.

To, že vím hovno, ale jsem chytrej jako věžní hodiny, je ovšem pravidlem u 99 procent Jirsákových diskusních příspěvků... Divím se, že s ním nikdo ještě pořád má snahu diskutovat.  ;D
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 25. 10. 2014, 20:50:05
Citace
Takže jste potvrdil, co jsem tvrdil já
Filip Jirsák tvrdí, že
1) Běžné webhostingy nepoužívají mod_php
2) Běžné webhostingy nepoužívají sdílené konexe
3) Běžné webhostingy startují nový PHP požadavek pro každý request
4) Použití db bude pomalejší než použití filesystému

Já všechny tyto bláboly vyvrátím a co na to Filip? Že jsem jen potvrdil to, co tvrdil.
Dál ukážu praktický test, který dokazuje, že v db je to rychlejší. Co na to Filip? Že to musí být pomalejší.

Tomu se neříká diskuse, ale demagogie.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 26. 10. 2014, 08:43:42
Tomu se neříká diskuse, ale demagogie.
Tohle je jediná pravdivá věta z vašeho komentáře. Své komentáře jste ohodnotil správně. A proč je to demagogie? Protože píšete, že tvrdím něco, co jsem nikdy nenapsal, nebo tvrdíte, že jste ukázal praktický test, který dokazuje vaše tvrzení, přitom ve skutečnosti dokazuje jenom to, že nevíte, o čem je řeč.
Jenom abyste si trochu rozšířil obzory: to, že něco nazvete "databáze", nemá na rychlost žádný vliv, není to žádný magický urychlovač. Takže pokud sám napíšete (já vím, že je to nemožné, ale zkuste si to alespoň představit) úplně stejný kód, který to vyhledávání a kešování dělá v databázi, bude ten váš kód úplně stejně rychlý, jako ta databáze. Takže vaše pokusy dokázat, že v databázi je to vždy rychlejší, jsou marné.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: DK 26. 10. 2014, 10:28:23
Tomu se neříká diskuse, ale demagogie.
Tohle je jediná pravdivá věta z vašeho komentáře. Své komentáře jste ohodnotil správně. A proč je to demagogie? Protože píšete, že tvrdím něco, co jsem nikdy nenapsal, nebo tvrdíte, že jste ukázal praktický test, který dokazuje vaše tvrzení, přitom ve skutečnosti dokazuje jenom to, že nevíte, o čem je řeč.
Jenom abyste si trochu rozšířil obzory: to, že něco nazvete "databáze", nemá na rychlost žádný vliv, není to žádný magický urychlovač. Takže pokud sám napíšete (já vím, že je to nemožné, ale zkuste si to alespoň představit) úplně stejný kód, který to vyhledávání a kešování dělá v databázi, bude ten váš kód úplně stejně rychlý, jako ta databáze. Takže vaše pokusy dokázat, že v databázi je to vždy rychlejší, jsou marné.

Kdyz uz se chcete vykrucovat slovickarenim, o jake databazi se tu vlastne vede diskuze, tak dovolte par citaci


Zkoušel jste, jak "pomalé" bude to blokování přes .htaccess? Já bych odhadoval, že režie spouštění PHP interpretu bude mnohem větší, než použití běžného asociativního pole v PHP pro vyhledávání těch IP adres, a nejspíš i větší, než ten .htaccess. Jinými slovy, pokud vám stačí sdílený webhosting, nemusíte vymýšlet nic speciálního, protože úzké hrdlo vaší aplikace bude mnohem dřív úplně někde jinde, než ve vyhledávání blokovaných IP adres.

Co v databázi [myšleno MySQL] ukládat…
Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)



To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.


A co zkousel Logik
Startování PHP je daleko dražší operace, než konexe do mysql. Takže v okamžiku, kdy se startuje PHP, tak je to jedno - nejdražší bude start PHP procesu a nějaká další vopičárna je jedno. V okamžiku, kdy se používá nějaké fastcgi, tak jsou čásy následující:

 1.6593210697174 -  10000 dotazů do pole načteného ze souboru
1.551509141922    - 10000 dotazů do databáze
 1.1013481616974 - 10000 dotazů do databáze používající pconnect

Soubor je tedy jednoznačně pomalejší než databáze. Kód (v databázi i v souboru je 1000 ip):
...
Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.


Tak co dal, jak se z toho pokusite vykecat ted? (Predpokladam argumentaci, ze muj prispevek neni vubec relevantni, resim uplne neco jineho, nepouzivam diakriticka znamenka, nejsem registrovany. Je to spravne?)
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 26. 10. 2014, 11:20:46
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)
Ne, tady se nebavíme o žádné databázi. Tady se bavíme o vyhledávání IPv4 adres. IPv4 adresa, to je jedno 32bitové číslo, v souboru zapsané jako čtyři po sobě jdoucí bajty. Pokud to chcete popisovat gramatikou a psát na to speciální parser, nikdo vám samozřejmě nebrání, ale je to zbytečné. Takže když odstraníte tu zbytečnou režii, kterou tam sám přidáváte, dostanete efektivnější řešení.

Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.
Nejpomalejší to ovšem není z toho důvodu, že se používá soubor, ale z toho důvodu, že je to nejhloupější možná implementace.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: DK 26. 10. 2014, 11:59:09
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)
Ne, tady se nebavíme o žádné databázi. Tady se bavíme o vyhledávání IPv4 adres. IPv4 adresa, to je jedno 32bitové číslo, v souboru zapsané jako čtyři po sobě jdoucí bajty. Pokud to chcete popisovat gramatikou a psát na to speciální parser, nikdo vám samozřejmě nebrání, ale je to zbytečné. Takže když odstraníte tu zbytečnou režii, kterou tam sám přidáváte, dostanete efektivnější řešení.
Jakto? Databaze muze byt definovana jakkoliv, klidne i souborem se zaznamy sekvencnich bajtu. Precejenom jsou to vase slova.

Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.
Nejpomalejší to ovšem není z toho důvodu, že se používá soubor, ale z toho důvodu, že je to nejhloupější možná implementace.
Implementace, kterou jste navrhoval vy.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 26. 10. 2014, 12:33:25
Jakto?
Protože se tazatel ptal, jak nejlépe na sdíleném webhostingu blokovat přístup z určitých IP adres. To, že se to mermomocí musí řešit pomocí databáze nebo dokonce relační SQL databáze nebylo součástí zadání.

Implementace, kterou jste navrhoval vy.
Nikoli. Já jsem psal o indexu uloženém v souboru, psal jsem také o tom, že ten index může být implementován úplně stejně, jako je v té databázi. Mohu vás ujistit, že MySQL neindexuje IP adresy tak, že si je neseřazené uloží v dekadickém zápisu do souboru, co řádek to jedna IP adresa.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 26. 10. 2014, 18:31:10
Citace
Protože píšete, že tvrdím něco, co jsem nikdy nenapsal...
Trpíš schizofrenií, ztrátou paměti, nebo jsi takový demagog? Naschvál jsem si předtím dal práci, aby vypsaná tvrzení byla přesně doložitelná tím, co jsi psal:

Citace
1) Běžné webhostingy nepoužívají mod_php
2) Běžné webhostingy nepoužívají sdílené konexe


JIRSÁK:  Pokud by to tazatel řešil na vlastním serveru, který má plně pod kontrolou a může tam provozovat PHP jako modul...

JIRSÁK: Co kdybyste místo toho, jak to asi nefunguje, raději popsal, jak to tedy podle vás funguje? Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.   
Kdo to psal? Nevíš, nebo nějaké tvé druhé já?

Citace
3) Běžné webhostingy startují nový PHP požadavek pro každý request¨

NĚKDO: Stojím si za tím že spouštět nový php proces pro každý request je dobré pouze pro tupé demo, v praxi nepoužitelné.

JIRSÁK: Co kdybyste místo toho, jak to asi nefunguje, raději popsal, jak to tedy podle vás funguje? Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.
Ne, vůbec tady neoponuješ názoru, že se běžně nové procesy pro každý request nespouští...
A todle: Já bych odhadoval, že režie spouštění PHP interpretu bude mnohem větší, než použití běžného asociativního pole v PHP jsi také nepsal ty, žejo....


Citace
4) Použití db bude pomalejší než použití filesystému

JIRSÁK: Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
...
JIRSÁK: Nikoli. Já jsem psal o indexu uloženém v souboru,
Kde je uložen soubor? Ve filesystému. Tedy chceš tvrdit, že nesrovnáváš řešení "v databázi" a "filesystému"?

Tak která diagnóza? Schizofrenie, skleróza, nebo demagogie?

------------------------------------------------------------------------------------------------
Citace
Já jsem psal o indexu uloženém v souboru, psal jsem také o tom, že ten index může být implementován úplně stejně, jako je v té databázi. Mohu vás ujistit, že MySQL neindexuje IP adresy tak, že si je neseřazené uloží v dekadickém zápisu do souboru, co řádek to jedna IP adresa.
Citace
To my víme také. Ale narozdíl od Tebe víme, že napsat stejné vyhledávání, jaké je v mysql na binárním stromu a stojí pár instrukcí, bude v PHP pěkně drahé, protože se bude muset kompilovat a každej příkaz bude stát  tisíce instrukcí, takže "tupá implementace" využívající C funkce bude pro řádově tisíce záznamů rozhodně rychlejší, než nějaká Tvá sofistikovaná logika. A to třeba i proto, že mysql může použít mmap, přímej přístup k paměti pomocí pointerů atd... atd... atd...
 
Pokud se chceš alespoň trochu zbavit nálepky kecala a demagoga - to že si dělal chytrýho ohledně sdílenejch webhostingů si holt už neodpářeš - máš jedinečnou možnost: napiš to dle tvých slov v kódu PHP tak, aby to bylo řádově rychlejší než v mysql (já sám umím dosáhnout o fous lepšího času než s neperzistentní konexí).
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 26. 10. 2014, 19:03:22
Naschvál jsem si předtím dal práci, aby vypsaná tvrzení byla přesně doložitelná tím, co jsi psal
Výborně. Proč je tedy nedoložíte? Proč místo toho dokládáte, že já jsem napsal něco jiného, než co vy tvrdíte, že jsem napsal? Třeba "[pro uživatele] připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru" je něco jiného, než "sdílené konexe" (už jenom proto, že "sdílené konexe" není nic).
Nesrovnám nejhloupější možné řešení s daty v souboru vytvořené Logikem s efektivním řešením v databázi, srovnávám efektivní řešení s daty v souboru s efektivním řešením v databázi, v obou případech ve variantě, která asi nejspíš bude dostupná u sdíleného webhostingu.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: DK 26. 10. 2014, 19:49:42
...
Nesrovnám nejhloupější možné řešení s daty v souboru vytvořené Logikem s efektivním řešením v databázi, srovnávám efektivní řešení s daty v souboru s efektivním řešením v databázi, v obou případech ve variantě, která asi nejspíš bude dostupná u sdíleného webhostingu.

A proč to píšete do téhle diskuse, kde se bavíme o sdíleném webhostingu? Pokud by to tazatel řešil na vlastním serveru, který má plně pod kontrolou a může tam provozovat PHP jako modul, tak se na tohle vůbec neptá.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 26. 10. 2014, 20:48:44
Citace
Třeba "[pro uživatele] připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru" je něco jiného, než "sdílené konexe" (už jenom proto, že "sdílené konexe" není nic).
Co jiného než otevřený pool databázových spojení (aneb konexí) jsou konexe sdílené mezi requesty? Úmyslně se snažíš překroutit a nepochopit a překroutit to co píšu, aby ses z toho moh nějak vykecat. Takže z těch tří možností je evidetně správná diagnóza demagog.

Citace
Nesrovnám nejhloupější možné řešení s daty v souboru vytvořené Logikem s efektivním řešením v databázi, srovnávám efektivní řešení s daty v souboru s efektivním řešením v databázi, v obou případech ve variantě, která asi nejspíš bude dostupná u sdíleného webhostingu.
Vždyť píšu - přestaň básnit a pokud považuješ mé PHP řešení za nefektivní, napiš lepší. To je jediný validní argument, vše ostatní jsou s prominutím kecy. Tak ukaž to své řešení, které bude dle Tvých slov řádově efektivnější než databáze.

PS: Jinak samozřejmě řešení v MySQL je daleko k optimu (nebyla nijak instalace vyladěná, nepoužil jsem např. memory engine atd...
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 26. 10. 2014, 21:04:16
Co jiného než otevřený pool databázových spojení (aneb konexí) jsou...
"Otevřený pool databázových spojení" je něco jiného než "[pro uživatele] připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru".
Mimochodem, kolik otevřených spojení má každý uživatel, a kolik uživatelů je na jednom vašem serveru?

pokud považuješ mé PHP řešení za nefektivní, napiš lepší.
To lepší řešení už tu bylo popsáno několikrát, dávno před tím, než jste napsal to vaše.

Jinak samozřejmě řešení v MySQL je daleko k optimu (nebyla nijak instalace vyladěná, nepoužil jsem např. memory engine atd...
Jistě, na sdíleném webhostingu si každý může vyladit parametry databázového serveru podle sebe...
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 27. 10. 2014, 09:30:45
Citace
"Otevřený pool databázových spojení" je něco jiného než "[pro uživatele] připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru".
O lokálním serveru jsi mluvil všehovšudy v jednom příspěvku, v ostatních jsi popíral tu možnost jako takovou nezávisle na tom kde mysql je, např. Stejně tak se musí při každém požadavku navázat spojení do databáze. Žádný lokální server. Žádné demagogické hračičky se slovy, jestli otevřený pool je totéž jako připravený pool otevřených spojení. Naprosto jednoznačně popíráš možnost, že by mohla nastat situace, kdy spojení není třeba navazovat.

 
Víš, jak se pozná demagog? Že vytrhává a překrucuje věty z kontextu diskuse. Což jsi právě předvedl: vytrhl jsi jednu svojí větu z kontextu a snažíš se na jejím základě tvrdit, žes tvrdil něco jiného nežs tvrdil. Jak říkám: demagog.

Citace
Mimochodem, kolik otevřených spojení má každý uživatel, a kolik uživatelů je na jednom vašem serveru?
To jsi ještě furt nepochopil, že ty otevřené konexe mohou mít krátký čas života a tedy být jen pro těch pár uživatelů, u kterých právě dochází k hodně requestům a tedy je třeba u nich výkon řešit???


Citace
Jistě, na sdíleném webhostingu si každý může vyladit parametry databázového serveru podle sebe...
Např. vybrat si engine jaksi bez problémů mohu. Převést IP do integeru také. atd... Na serveru sice nemohu ladit parametry mysql, ale rozhodně je bude mít lépe nastaveny, než instance na devel stroji udělaná tak, aby zatěžovala stroj co nejméně.

Citace
To lepší řešení už tu bylo popsáno několikrát, dávno před tím, než jste napsal to vaše.
Jo, a dost lidí tady vysvětlovalo, proč to rychlejší nebude, což jsi zcela po jirsákovsku, nemaje protiargument, nechal bez povšimnutí. Tak opakuji, pokud něco tvrdíš, přestaň demagogicky kecat a dokaž to. Napiš to své řešení, které bude řádově rychlejší než databáze.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 27. 10. 2014, 10:08:22
O lokálním serveru jsi mluvil všehovšudy v jednom příspěvku
Který jste vy citoval. Za to já opravdu nemůžu, nenutil jsem vás k tomu.

Naprosto jednoznačně popíráš možnost, že by mohla nastat situace, kdy spojení není třeba navazovat.
Opět si vymýšlíte.

Víš, jak se pozná demagog? Že vytrhává a překrucuje věty z kontextu diskuse.
Ano, vím. Nejen teoreticky, vy jste přímo ukázkový příklad.

Což jsi právě předvedl: vytrhl jsi jednu svojí větu z kontextu a snažíš se na jejím základě tvrdit, žes tvrdil něco jiného nežs tvrdil.
Takže já jsem vytrhl jednu svojí větu z kontextu, citoval jsem ji, polemizoval s ní, a pak to celé poslal vaším jménem? Není to spíš tak, že příspěvek z 26. 10. 2014, 18:31:10, u kterého je jako autor uvedeno "Logik", jste psal vy?

To jsi ještě furt nepochopil, že ty otevřené konexe mohou mít krátký čas života a tedy být jen pro těch pár uživatelů, u kterých právě dochází k hodně requestům a tedy je třeba u nich výkon řešit???
My tady ale neřešíme případ, kdy webhoster má na jednom serveru pár webů, které server dost vytěžují, a pak další weby, na které se sem tam někdo zeptá. Tazatel, já a pár dalších lidí (vy ne) řeší případ, kdy je tazatel uživatelem sdíleného webhostingu, a chce aby jeho aplikace odpovídala na požadavek co nejrychleji, bez ohledu na to, jestli je to jeden požadavek za hodinu nebo jestli přichází jeden požadavek za druhým. Tazatel neřeší zátěž serveru ale dobu odezvy.
Jinak navrhnout aplikaci tak, že prohlásíte, že spojení do databáze budou nakešovaná v poolu, takže dobu navázání spojení je možné zanedbat, a pak prohlásit, že spojení v poolu vydrží jen krátkou dobu, budou se rychle uzavírat a tím častěji bude nutné navazovat nová spojení s režií s tím spojenou, to je vskutku mistrovská analytická práce.

Jo, a dost lidí tady vysvětlovalo, proč to rychlejší nebude
Odkaz nebude, že? Protože to nevysvětloval nikdo, pouze vy jste vysvětlil, že vaše úplně jiné řešení bude pomalejší.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Logik 27. 10. 2014, 12:52:16
Citace
> O lokálním serveru jsi mluvil všehovšudy v jednom příspěvku
Který jste vy citoval. Za to já opravdu nemůžu, nenutil jsem vás k tomu.
A to jako když cituji jeden Tvůj příspěvek, tak to znamená, že jsi ostatní neřekl nebo jak?????? Předpokládal jsem, že Ti stačí připomenout, co jsi tvrdil, nečekal jsem, že jsi takový demagog, že když z X příspěvků, které dokládají cos tvrdil, vytáhnu jen
jeden, tak že se ho budeš snažit takhle překrucovat.
Ti fakt není blbé se takto přiznávat, že pro Tebe není relevantní, co jsi tvrdil, ale na co si oponent v diskusi vzpomene, že jsi tvrdil a připomene Ti to????
Citace
>> Stejně tak se musí při každém požadavku navázat spojení do databáze.
> Naprosto jednoznačně popíráš možnost, že by mohla nastat situace, kdy spojení není třeba navazovat.
Opět si vymýšlíte.
To fakt chceš tvrdit, že z výroku, že se musí pokaždé navazovat spojení do databáze neplyne, že není možné, že by se spojení navazovat nemuselo???? Jakej demagogickej kolotoč předvedeš tentokrát, aby ses z takovýdle elementární neschopnosti použít logiku pokusil vykecat?
Nechceš se třeba točit na tom, že v mé interpretaci jsem znovu nevypisoval veškeré podmínky modelového případu (za předpokladu requestu na sdíleném webhostingu kdy je třeba konexe do databáze atd...) ? To by bylo zcela v Jirsákovském demagogickém stylu vytrhávání z kontextu.

Citace
Odkaz nebude, že? Protože to nevysvětloval nikdo...
Ale prosím. Např. já v příspěvku 62 nebo DK v příspěvku 58. Jen ukazuješ, že ani neumíš číst, co Ti ostatní vysvětlují.

Citace
že vaše úplně jiné řešení bude pomalejší.
Moje řešení? Vždyť jsi s ním přišel první: viz příspěvek #17. Skleróza, nebo demagogie?

Citace
Takže já jsem vytrhl jednu svojí větu z kontextu, citoval jsem ji, polemizoval s ní, a pak to celé poslal vaším jménem? Není to spíš tak, že příspěvek z 26. 10. 2014, 18:31:10, u kterého je jako autor uvedeno "Logik", jste psal vy?
Opět demagogie a neznalost základních diskusních pravidel. Citace samotná není vytržení z kontextu a překroucení. Vytržení z kontextu je až, kdy onu citaci interpretujeme odlišně, než vyplývá z kontextu. Vzhledem k tomu, že je má interpretace toho cos napsal v souladu s dalšími Tvými vyjádřeními (viz např. ta citovaná věta výše, kde to jednoznačně tvrdíš obecně), tak jsem se žádného vytržení z kontextu nedopustil. Naopak pokud Ty se snažíš tu větu interpretovat tak, že je ve sporu s Tvýma dalšíma vyjádřeníma, tak jsi se vytržení z kontextu a překroucení dopustil....

Tak, silácký řeči sis odbyl, tak čekám na ten důkaz, že to Tvé vybájené řešení je řádově rychlejší než řešení v databázi.


Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Filip Jirsák 27. 10. 2014, 13:17:28
když z X příspěvků, které dokládají cos tvrdil, vytáhnu jen jeden, tak že se ho budeš snažit takhle překrucovat.
Když z X příspěvků, kde jsem údajně něco tvrdil, vytáhnete zrovna jeden, kde jsem to netvrdil, je to argument celkem k ničemu.

Ti fakt není blbé se takto přiznávat, že pro Tebe není relevantní, co jsi tvrdil, ale na co si oponent v diskusi vzpomene, že jsi tvrdil a připomene Ti to????
Naopak, pro mne je relevantní to, co jsem doopravdy tvrdil. To, že vy si vzpomínáte na něco, co se vůbec nestalo, je váš problém. Až se místo vašich vidin začnete zabývat tím, co doopravdy píšu, můžeme pokračovat. Zatím to nemá smysl, protože vaše odpovědi jsou zřejmě zcela nezávislé na tom, co já píšu.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Lol Phirae 27. 10. 2014, 13:28:18
Když z X příspěvků, kde jsem údajně něco tvrdil, vytáhnete zrovna jeden, kde jsem to netvrdil
Naopak, pro mne je relevantní to, co jsem doopravdy tvrdil.

No, prosímtě, ty už zjevně ani nevíš, co jsi tvrdil. Ty jsi totiž magor, který měl už dávno skončit ve svěrací kazajce v Bohnicích. Běž si dostudovat ten export z Gimpu, tam jsi předváděl něco podobného (http://www.abclinuxu.cz/clanky/gimp-2.8-v-jednom-okne-a-s-celou-radou-vylepseni). Choroba zjevně je chronického charakteru a vyžaduje léčení.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: Rejpal 27. 10. 2014, 14:19:28
Už jste si ty zadky očichali dostatečně? Pokud v tom budete dál pokračovat, je možné, že budete mít potom čumák umazaný od výkalů toho druhého, pakliže je nemáte umazané už teď...
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: olina 13. 05. 2018, 14:52:37
Kup si VPS. Chápu, že cenový rozdíl mezi hostingem a vpskou v hodnotě dvou piv měsíčně je docela dost.

OT: Osobně mám zase problém se zabezpečením kola. Nechci, aby mi ho na ulici, když jsem v práci, v obchodu, kině..., ukradli. Známí říkali, že si mám pořídit na kolo zámek, ale já si ho prostě nechci kupovat. Poradíte mi někdo jak rozumně a bezpečně někde nechat kolo?

Ano, s tim ti poradim. Privaz k tomu kolu dve zle, hosmdesatikilove dogy. Akorat je musis vytrenovat, aby zustaly na miste, kdyz jim das povel, aby ti s tim kolem neutekly. Je to mnohem spolehlivejsi nez nejaky zamek, ale prodrazi se to na zradle.
si čokl?
Název: Re:sdileny webhosting, jak nejlepe blokovat 10 000+ ip adres bez ztraty vykonu?
Přispěvatel: admnistrator 13. 05. 2018, 17:03:53
Jasne! moje aplikace ma asi tak 2x rychlejsi execution time nez bezne hostovane prasarny typu WP a Joomla. A jediny o co se snazim, aby to tak zustalo.

uz zadnej zbytecnej offtopic.
nic te nanapada? tak nepis.
Jedine vps a resit to trochu na vyssi urovni nez htaccess.

... nebo neblokovat proxy a toory protoze k tomu se tezko hleda duvod. Kdo bude chtit anonymne si poradi z mobylniho pripojeni nebo verejneho hotspotu.
Název: Re:Blokování 10 000+ IP adres na hostingu
Přispěvatel: lojzak 13. 05. 2018, 17:12:51
Reaguješ na 4 roky staré vlákno...