PHP - session a SID

Sekcia: Konfigurácia 21.05.2007 | 20:19
Avatar Lukáš Ubuntu 9.10  Používateľ
Spravil som si jednoduchý mail formulár a na aku-takú ochranu proti spam robotom skúšam generovať jednoduché rovnice. Sú to dve stránky : Formulár pre vyplnenie údajov a druhá stránka ako prímateľ. Výsledok z rovnice prenášam medzi stránkami cez session. Ako som sa dočítal a aj na opere otestoval, bez cookies to nejde. vtedy treba použiť SID. Čiže teraz sa pýtam, ako to tam zakomponovať.

na začiatku oboch stránok mám:
<?php session_start(); ?>

V tej prvej ešte navyše :
$_SESSION['cislo'] = 40;

A potom už len odkazujem
$_SESSION['cislo'] = ... 
Stránky si pozrite, len mi neposielajte e-maily (Pre otestovanie stačí vyplniť len rovnicu, nie všetky údaje).
Ďakujem
Juchúúú! Písmenkujem na lukas.cerro.sk
    • Re: PHP - session a SID 22.05.2007 | 01:04
      still   Návštevník
      <input type="hidden" value="rovnica">
      pre lepsiu ochranu mozes value aj nejak zakodovat a potom dekodovat. A pokial si taky paranoik ako ja, mozes do rovnice povkladat rozne dalsie prvky, aby oddelovali jednotlive znaky, tak aby sa zneprehladnil zdrojovy kod, ale aby vysledok bol citatelny, popripade na viacere riadky.

      A ako som si vsimol, tu na LinuxOSe nerataju s tym, ze by mal niekto vypnute cookies, zeby zamer? ;-)
    • Re: PHP - session a SID 22.05.2007 | 02:59
      Jaro   Návštevník
      Osobne sa mi to riesenie zda byt dost intrusive.

      Ja som to riesil na jednej stranke tak, ze som vyuzil fakt, ze roboty nevedia javascript.

      Dalej som vyuzil stary dobry captcha, ktory je vsak potrebne vyplnit iba ak ma uzivatel vypnuty javascript, inak sa vypise javascriptom cez document.write cely string potrebny pre captcha - <input type="hidden" name="string_captcha" value="jds32n">, ten sa odosle a je preveri, ci to bol robot, alebo nie.

      Ak ma user vypnuty js, tak ide tag <noscript>, kde je zobrazeny obrazok, z ktoreho uz treba opisat znaky do <input type="text" name="string_captcha">

      Funguje to super, nechodi mi nic, zakaznikov to absolutne nerusi.
      • Re: PHP - session a SID 22.05.2007 | 09:37
        still   Návštevník
        Nie vsetci boti nevedia javascript, nie vsetci maju zakazane cookies. Je to len na tvorcovi bota, akym sposobom ho napise.
        Na captcha vsak potrebujes generator obrazkov dostatocne necitatelnych pre robota, ale citatelnych pre cloveka a to moze byt problem, pretoze vela botov je stavanych tak, aby captcha vedeli rozpoznat. Na druhu stranu sa da spravit aj zopar obrazkov, kde bude text absolutne citatelny a bude tam napisane "Aky je teraz rok" a pod., boti to opisu, clovek na to odpovie :-) problem vsak nastava, pokial chces brat do uvahy aj ludi, ktori nepracuju s grafickym browserom, cize sa im obrazok ani nezobrazi, vtedy ani javascript nefunguje.

        A momentalne posledna taka metoda, ktora ma napadla a da sa pouzit, je policko s nazvom "som robot" clovek nevyplni a kedze robot vyplna vsetko.. tu by sa to dalo napr. javascriptom skryt, aby to nerusilo vacsinu.. ta mensina je vacsinou dost intelignetna na to, aby to ignorovala.

        a samozrejme je dobre, ak policko "meno" nepomenujes "meno" a pod., alebo ked to poprechadzujes... vtedy sa tiez da odchytit robot, ktory dlhsi text zada do pola "sprava", "text" a pod. (samozrejme v textarea) Ale tu moze nastat problem pri kratkych prispevkoch.

        A najhorsia varianta je, ked niekto napise bota priamo pre tvoju stranku a bude ho podla zmien tiez upravovat, vtedy je takmer nemozne ho odstavit.

        Takze vyber je len na tebe. Mysli vsak na vsetkych citatelov :-)
        • Re: PHP - session a SID 22.05.2007 | 17:03
          Jaro   Návštevník
          "Nie vsetci boti nevedia javascript, nie vsetci maju zakazane cookies."

          to je trochu extrem, kvalitne ho vediet nebudu nikdy, alebo aspon nie tak skoro

          "Na captcha vsak potrebujes generator obrazkov dostatocne necitatelnych pre robota, ale citatelnych pre cloveka a to moze byt problem, pretoze vela botov je stavanych tak, aby captcha vedeli rozpoznat."

          zabudol som spomenut, ak je clovek velmi paranoicky, treba to spravit riadne necitatelne, inak je to ok, staci len trochu zamachlit

          "A najhorsia varianta je, ked niekto napise bota priamo pre tvoju stranku a bude ho podla zmien tiez upravovat, vtedy je takmer nemozne ho odstavit."

          To by si musel mat riadne dobry obsah, alebo tvorca boota by musel byt riadny curak
          • Re: PHP - session a SID 22.05.2007 | 21:57
            Avatar Andrej "karči" Krajči Gentoo  Administrátor
            >> To by si musel mat riadne dobry obsah, alebo tvorca boota by musel byt riadny curak

            Alebo oboje 8-)
            "IB, thy name is homework." -- IB
          • Re: PHP - session a SID 22.05.2007 | 22:21
            still   Návštevník
            "to je trochu extrem, kvalitne ho vediet nebudu nikdy, alebo aspon nie tak skoro"
            staci ak je postaveny napr. na Gecku a kvalitnejsie uz snad ani nepotrebuje :-) ale to sa uz skor spaja s tou najhorsou variantou - riadne dobry obsah a riadny curak :-D

            vo vacsine pripadov staci hocico jednoduche aj jednoduchsie ako captcha :-)
    • Re: PHP - session a SID 22.05.2007 | 22:35
      Avatar Igor Hlina Mac OS ML  Používateľ
      Pomocou nejakej funkcie PHP (alebo testovanim klienta) si zisti, ci klient podporuje cookies.

      Ak ano, SESSION_ID sa defaultne bude posielat cez cookie. Ak ich ma vsak klient vypnute, musis SESSION_ID poslat v URL. V takom pripade musis vsetky odkazy na stranke generovat v nasledovnom formate
      echo "<a href=\"bla-bla-bla?PHPSESSID=1234567890\">link</a>"

      No a najlepsie je tento system vylepsit tak, ze podla tej funkcie na zistenie podpory cookies budes nastavovat nejaku konstantu na bud prazdny retazec, alebo na "PHPSESSID=1234567890" a do kazdelo prikazu na vypis ,<a href tu konstantu zakomponujes
      if (support_coockies()) {
        define ("CONST_URL", "");
      else
        define ("CONST_URL","PHPSESSID=".session_id());
      
      .
      .
      .
      
      echo "<a href=\"bla-bla-bla".CONST_URL."\">link</a>"
      while (2*2 == 5) { echo "If you're reading this, something is definitely wrong"; }
      • PHP - session a SID 22.05.2007 | 23:18
        Avatar Lukáš Ubuntu 9.10  Používateľ
        Prečítal som si to celé. Vcelku zaujímavá diskusia.

        Otázka pomimo: Nie je problem pre robota zmenit hodnotu "referer", ktoru mi bude posielať?

        Kodovanie javascriptom: To som uz mal, na to som uplne zabudol, to tam dorobim.

        Srigi : Dakujem za riesenie, poobzeram, ked sa budem zase venovat mail formularu, dorobim.



        Juchúúú! Písmenkujem na lukas.cerro.sk
        • PHP - session a SID 22.05.2007 | 23:21
          Avatar Lukáš Ubuntu 9.10  Používateľ
          Este k jarovi. Citujem:
          "Osobne sa mi to riesenie zda byt dost intrusive."

          Ako som si pozrel v slovniku "intrusive" je dotieravy. Mohol by si upresnit?
          (Alebo narazas na lenivost userov?)
          Juchúúú! Písmenkujem na lukas.cerro.sk
          • Re: PHP - session a SID 23.05.2007 | 00:26
            Jaro   Návštevník
            Dotierave... ...mozno silne slovo, ja sa anglicky ucim skor z kontextu a vykladom, myslel som to vsak skor tak ako obtazujuca.

            Ja neznasam vyplnanie nejakych formularov, len kvoli tomu, aby sa overilo, ci neni som nejaky robot.

            S tou captchou som nemal nikdy problem, od kedy som ju zaviedol, lebo uz sa to nedalo nevydrzat, ako som to musel premazavat, takze myslim, ze zabralo to.

            Ja nenarazam na ich lenivost, ale ak user = zakaznik, tak chcem pre neho co najvacsie pohodlie, ak je zakaznik 40+ a este zena, tak niekedy nepochopi naco sluzi taka antispam ochrana.

            Ved kazdy vie aki ludia mu chodia na stranky a co si na nich moze dovolit :)), ale ja vyslovene uz neznasam to vyplnovanie.
            • Re: PHP - session a SID 23.05.2007 | 00:30
              Avatar Igor Hlina Mac OS ML  Používateľ
              S CAPTCHOu som videl dobry napad. Pouzite boli len jednoduche - lahko citatelne motivy. Ale ich typy sa menili s kazdou jednou instanciou! Ked si vymyslite cca 10 druhov Captchy (a zrozumitelnej ludom), priemne zvysite odolnost.
              while (2*2 == 5) { echo "If you're reading this, something is definitely wrong"; }
            • Re: PHP - session a SID 23.05.2007 | 00:51
              Avatar Lukáš Ubuntu 9.10  Používateľ
              Zhruba toto som mal na mysli aj ja. V sucasnej dobe su vsak Captcha, alebo ine sposoby identifikacie uplne normalnou vecou. 99% ludi stahuje z rapidshare a tam je captcha. Tak si myslim, ze vyriesit jednu jednoduchu (trojny integral s divergenciou :) ) rovnicu by mohli prezit.

              Mas pravdu ze je to tak trochu otravne, ale co ja viem. Otravne by sa mi zdalo uplne zdeformovane captcha, ktore ma clovek problem precitat.
              Juchúúú! Písmenkujem na lukas.cerro.sk
      • Re: PHP - session a SID 23.05.2007 | 12:31
        Avatar titanik mint  Používateľ
        apache si to pridava sam (len to treba nastavit), urcite toto neni to spravne riesenie
        mimochodom tam chyba "&PHPSESSID=.."
        • Re: PHP - session a SID 23.05.2007 | 17:05
          Avatar Igor Hlina Mac OS ML  Používateľ
          Ale co s hostingom, kde to nemozes nastavit?
          while (2*2 == 5) { echo "If you're reading this, something is definitely wrong"; }
          • Re: PHP - session a SID 23.05.2007 | 18:27
            Jaro   Návštevník
            v .htaccess - ako uz neviem, vedel by som mozno napisat riesenie, ale nerobil som to uz riadne dlho a iba malokrat, takze skor by som dristol hlupost :))
    • Re: PHP - session a SID 23.05.2007 | 12:33
      Avatar titanik mint  Používateľ
      dobry clanok je:
      http://www.root.cz/clanky/komentarovy-spam/