Autor | Zpráva | ||
---|---|---|---|
tpilar Profil |
#1 · Zasláno: 24. 1. 2013, 14:40:45
Po tom co mi WWB 6 vygeneroval nějaký nepoužitelný PHP zmetek, jsem sehnal něco jen v Java Scriptu ale obávám se, že mě šéf nebude mít rád až firemní e-mail zaplaví spam.
Znáte v JS captchu a odesílání na e-mail, které by nešlo strojově rozkódovat. Na stránkách www.reformy.cz mají něco ve stylu, dolova : SLOVY : ČTRNÁCT plus ŠEST mínus VYGENEROVANÉ NÁHODNÉ ČÍSLO. Pokud by to celé šlo udělat v Java Scriptu nebo jQuery bylo by to fajn. Ovšem ani ukládání záznamu o tom kdo se přihlašuje v PHP by nebylo marné. - I když po té co jsem dnes s PHP ztratil 3 hodiny ............. Pro inspiraci uvádím mnou, v naivní víře o bezpečnosti obšlehnutý kód v JS : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Simple JavaScript CAPTCHA Generator | Thoughts of a Typical Whiner | TypicalWhiner.com</title> <link href="css/formcss.css" rel="stylesheet" type="text/css" media="screen" /> </head> <body background="kod.jpg"; "style="width:342px; height:542px; margin:auto"> <form id="form3" action="#" method="post" onsubmit="return checkform(this);"> <fieldset> <legend>Kontaktní formulář</legend> <p class="first"> <label for="name">Jméno :</label> <input type="text" name="name" id="name" size="30" /> <label for="email">E-mail :</label> <input type="text" name="phone" id="phone" size="30" /> <p> </p> <label for="phone">Telefon :</label> <input type="text" name="phone" id="phone" size="30" /> <label for="code">Opište kód prosím : > <span id="txtCaptchaDiv" style="color:#F00"></span> <input type="hidden" id="txtCaptcha" /></label> <input type="text" name="txtInput" id="txtInput" size="30" /> </p> </fieldset> <fieldset class="last"> <p> <label for="message">Váš dotaz či názor :</label> <textarea name="message" id="message" cols="30" rows="10"></textarea> </p> </fieldset> <p class="submit"> <button type="submit">Odeslat.</button> </p> </form> <script type="text/javascript"> function checkform(theform){ var why = ""; if(theform.txtInput.value == ""){ why += "- Security code should not be empty.\n"; } if(theform.txtInput.value != ""){ if(ValidCaptcha(theform.txtInput.value) == false){ why += "- Security code did not match.\n"; } } if(why != ""){ alert(why); return false; } } //Generates the captcha function var a = Math.ceil(Math.random() * 9)+ ''; var b = Math.ceil(Math.random() * 9)+ ''; var c = Math.ceil(Math.random() * 9)+ ''; var d = Math.ceil(Math.random() * 9)+ ''; var e = Math.ceil(Math.random() * 9)+ ''; var code = a + b + c + d + e; document.getElementById("txtCaptcha").value = code; document.getElementById("txtCaptchaDiv").innerHTML = code; // Validate the Entered input aganist the generated security code function function ValidCaptcha(){ var str1 = removeSpaces(document.getElementById('txtCaptcha').value); var str2 = removeSpaces(document.getElementById('txtInput').value); if (str1 == str2){ return true; }else{ return false; } } // Remove the spaces from the entered and generated code function removeSpaces(string){ return string.split(' ').join(''); } </script><br /> <br /> <div align="center"><small style="text-align:center">reload the page to change the code</small></div> </body> </html> Ještě musím vyřešit průchod na firemní e-mail, jenž samozřejmě není webovou aplikací ve stylu seznamu nebo atlasu. Případně využití při vstupu zákazníků na webový server firmy. |
||
Joker Profil |
#2 · Zasláno: 24. 1. 2013, 14:45:45
tpilar:
„Pokud by to celé šlo udělat v Java Scriptu nebo jQuery bylo by to fajn.“ jQuery je Javascript. Nicméně, kdyby to bylo celé v JS, jak pak ověříte, jestli to návštěvník zadal správně? Přístup demonstrovaný v tom uvedeném kódu je úplně k ničemu, za prvé stačí vypnout JS a žádná captcha se nekoná a za druhé spamovací roboti si obvykle jen prozkoumají jaká pole jsou ve formuláři a potom už jen posílají odpovídající data na adresu cílového skriptu, čímž celé tohle obejdou. |
||
peta Profil |
#3 · Zasláno: 24. 1. 2013, 15:33:54
tpilar:
Roboti neztraceji obvykle s javascritem cas. Oni vytahnou ze stranky formularova pole, vyplni je a poslou ti get/post request s vyplnenymi udaji. Oni javascript nespousteji, ale pracuji se strankou jako se souborem. Ano, jsou i roboti, kteri umi pracovat i s js, ale tech je minimum a tve stranky pravdepodobne nenavstivi. Javascriptovy kod sam o sobe je nepouzitelny, javascript se da vzdy rozkodovat. Overeni musi provadet php kod, jestli v tom inputu navic je spravny text, ktery tam dosadi treba ten javascript. A protoze roboti js nespousteji, tak bez js se tam sam spravny text asi nedostane. Ten text by ale mel byt pokazde jiny a nemel by byt v html kodu, aby jej nemohl robot ziskat. |
||
Časová prodleva: 11 let
|
0