praegune kellaaeg 16.06.2025 06:36:04
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
19.11.2013 22:30:28
Recaptcha valideerimine kaks korda. |
|
|
Koostasin recaptcha selliselt, et pildilt mahakirjutatud sõnede kontrollimiseks ei peaks lehte refreshima. Paraku katsetasin alles nüüd oma "loomingut" ja selgus, et ühel võimalusel saab recaptchast mööda minna.
Proovisin siis rakendada valideerimist sel viisil, et lisaks olemasolevale javascriptiga kutsele teha korduvvalideerimine ka lehe refreshimisel samade andmete korral. Katsetasin ühtviisi ja teistviisi ning lõpuks söötsin funktsioonidele otse ette need andmed, mille korra oli recaptcha loonud ning mina olin sisestanud (recaptcha_challenge_field ning recaptcha_response_field), kuid esimene kord valideerib, aga kõik järgnevad korrad enam ei valideeri, naaseb tulemusega false.
Googeldasin natukene ning tundub, et peale ühekordset valideerimist seanss killitakse ning enam sama pildi ja sisestatud andmetega valideerida pole võimalik -> http://stackoverflow.com/questions/9227512/recaptcha-why-cant-i-check-the-same-result-twice
Kuidas saaks nii, et javascripti abil valideerides ning õigesti sisestatud sõnede korral saata andmed serverile kontrollimiseks sedasi, et klient ei saaks nende andmetega manipuleerides läbi lipsata?
Ärge väga pommitama hakake, aga tagauksega kommentaarium on mul näiteks siin lehel -> http://liivanelord.planet.ee/viking/
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
Redikate
HV veteran

liitunud: 30.12.2005
|
20.11.2013 14:40:05
|
|
|
Päris täpselt ei saa aru nüüd miks sul on vaja topelt valideerida. See eeldab, et loogiliselt ei pea paika midagi.
reCaptcha't saad kontrollida ainult serveris ju?. Teed ajax calli mis seda kontrolli teeb, juhul kui kontroll oli õige siis serveris näiteks kirjutad sessiooni, et see kasutaja on 1x captcha läbinud ning võib ühe kommentaari postitada. Võid ka kirja panna millal see läbimine toimus ning timeoutida mingi aja peale. A'la 1m peale captcha valideerimist saab ainult kommentaari postida.
Kui nüüd kasutaja kommentaari postitab, siis kontrollid ka sessionis on kirjas et captcha on läbitud või mitte, kui on siis lased läbi, kui ei ole siis annad errori.
Tunduks nagu loogiline lahendus.
E: Vaata oma stacki 2 vastust. Tunduks nagu selline lahendus.
_________________ http://nodejs.org/
"I'm also a person. Programming is just one thing I do." |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
33 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
20.11.2013 17:50:57
|
|
|
Redikate, selge, tegin sessiooni sinna, kus recaptcha kontrollib ning naaseb truega.
Senine "tagauks" oli seal, kus sai andmed serverile saata javascripti abil ning kommentaar lisati automaatselt andmebaasi ja mingit kontrolli ei olnud.
Selle "tagaukse" peale mõtlesin täiesti juhuslikult ning katse korras tegin greasemonkey skriptiga nii, et nupule vajutades ei valideerita recaptchat, vaid andmed saadetakse kohe ära.
Tänan vastuse eest.
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
Redikate
HV veteran

liitunud: 30.12.2005
|
20.11.2013 18:21:05
|
|
|
Nojah, see tagauks läheb kinni kui sa kommentaari postitades kontrollid kas captcha on läbitud või mitte (sessioni kasutades siis).
Loodatavasti oled sa ka sql injectioni, htmli sisestamise, XSS'i ning kommentaari pikkuse peale mõelnud.
_________________ http://nodejs.org/
"I'm also a person. Programming is just one thing I do." |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
33 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
21.11.2013 18:55:13
|
|
|
Redikate kirjutas: |
Nojah, see tagauks läheb kinni kui sa kommentaari postitades kontrollid kas captcha on läbitud või mitte (sessioni kasutades siis).
Loodatavasti oled sa ka sql injectioni, htmli sisestamise, XSS'i ning kommentaari pikkuse peale mõelnud. |
Vist olen.
SQL injectionit vist ei saa olla, kuna kommentaari väljundiks on käsk:
php:
|
$sql_kom= mysql_query("select * from viking_kommentaarid order by aeg desc");
|
Kommentaari sisestamise eel kasutan PHP funktsiooni addslashes() ja htmlspecialchars()
Kuna keegi on juba katsetanud, siis hetkel on esimeseks kommentaariks andmebaasis - <script>alert('hello world');</script>
Aga kommentaari pikkust ei oska küll määrata. Andmebaasis valisin veeru tüübiks TEXT ja kui sisestan pikkuse (näiteks 5000), siis näitab, et tabelit muudeti, aga muudatus ei kajastu ning kui soovin uuesti veergu muuta, siis on pikkuse lahter jälle tühi.
Kas määran veeru tüübiks VARCHAR, nagu see ka kommenteerija veerul on? Kui VARCHARi kasutan, siis salvestab teksti lubatud pikkuse ja see toimib. Ma ei tea, miks TEXT olen valinud, vist naised saunas seletasid, et see on millegipärast parem.
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
21.11.2013 20:08:50
|
|
|
Põhiline mis peaksid tegema on mysql_real_escape_string() pikkuse saad juba sisestamisel välja kärpida substr($uudis,0,256) 256 oleks siis see pikkus kusmaalt lõpp maha lõigatakse.
veidi selgituseks ka targemat juttu
tsitaat: |
If the database layer doesn't support binding variables then quote each non numeric user supplied value that is passed to the database with the database-specific string escape function (e.g. mysql_real_escape_string(), sqlite_escape_string(), etc.). Generic functions like addslashes() are useful only in a very specific environment (e.g. MySQL in a single-byte character set with disabled NO_BACKSLASH_ESCAPES) so it is better to avoid them. |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|