21 Востаннє редагувалося VTrim (12.01.2015 17:56:55)

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Давайте хацкери.
Замінив назви полів,запитів,файлів.
Зробив обфускацію.
http://mobilink.url.ph/cap.html

22

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?

23

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

ktretyak написав:

Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?

Згоден. VTrim, щоб надійно було генерувати картинку треба на стороні сервера. Всі інші варіанти - це не захист, так бавлення із canvas.
upd
Крім того, використовуючи reCAPCHA ви допомагаєте оцифровувати книжки.

24

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Таки да,браузер все одно видає початковий код)

Провальна ідея..

25

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

ktretyak написав:

Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?

А у вас є краще рішення для такої каптчі?)

26

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

VTrim написав:

А у вас є краще рішення для такої каптчі?)

http://replace.org.ua/post/46516/#p46516

27

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

ktretyak написав:
VTrim написав:

А у вас є краще рішення для такої каптчі?)

http://replace.org.ua/post/46516/#p46516

Зараз спробую щось накидати..

28

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Переписав.

файл cap.html

<html>
<body>
 
<form method="POST" action="form.php">
Введіть код з картинки:
<br>
<input type="text" name="captcha">
<input type="submit" value="Відправити">
<br>
 
<canvas id="captcha" width="135" height="90" style="border:1px solid"></canvas>
 
<script type="text/javascript">

   var save = new XMLHttpRequest();
   save.open("GET","captcha.php",true);
   save.send();

    save.onreadystatechange = function() { 
      if (save.readyState == 4) { 
        if(save.status == 200) { 

     var canvas = document.getElementById("captcha");
     var captcha = canvas.getContext("2d");
         captcha.font='25px Arial'; 
         captcha.fillStyle='gray';
         captcha.fillText(save.responseText, 20, 60); 
        }
      }
    };

 
</script>
 
</body>
</html>

Файл captcha.php

<?php

session_start();

  $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
  $numChars = strlen($chars);
  $string = '';
  for ($i = 0; $i < 6; ++$i) 
  {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
  }

 $_SESSION['captcha'] = $string;

 echo $string;

файл form.php

<?php

session_start();

if(!$_SESSION['captcha'] OR !$_POST['captcha'] OR $_SESSION['captcha'] !== $_POST['captcha'])
{
echo 'Помилка вводу каптчі!';
}
else
{
echo 'Все правильно';
}

29

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

VTrim, тепер правильну відповідь вже сервер присилає при завантаженні сторінки.

Не довіряйте щоб JavaScript звіряла правильну відповідь.

1. JavaScript повинна відправити серверу запит "давай капчу"
2. сервер дає цю капчу клієнту і зберігає дані в сесію (це здається у вас вже реалізовано)
3. клієнт відправляє запит на сервер запитуючи в нього "ну шо, правильно?"
4. сервер каже "так" або "ні".

Подякували: VTrim1

30

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Мабуть ми один одного не розуміємо через те, що... у вас що капчу малює JavaScript? Якщо так, то цим повинен займатись сервак.

31

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

ktretyak написав:

VTrim, тепер правильну відповідь вже сервер присилає при завантаженні сторінки.

Не довіряйте щоб JavaScript звіряла правильну відповідь.

1. JavaScript повинна відправити серверу запит "давай капчу"
2. сервер дає цю капчу клієнту і зберігає дані в сесію (це здається у вас вже реалізовано)
3. клієнт відправляє запит на сервер запитуючи в нього "ну шо, правильно?"
4. сервер каже "так" або "ні".

Дякую за підказку,щось я жорстко протупив).
Я з самого початку попередив шо капча не є безпечною,знав де косяк.
Але чомусь в голову не прийшло зробити так як ви сказали.

Все вами сказане вже зроблено.

32 Востаннє редагувалося ktretyak (12.01.2015 22:08:09)

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

=), ні, не так, ви ще не зробили що я перед останнім вашим постом написав

33

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

Моїм завданням було просто написати каптчу саме на канвасі).

В звичайній серверній каптчі нічого цікавого немає.

34

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

http://php.net/manual/en/function.image … e-examples

35

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

В звичайній серверній каптчі нічого цікавого немає.

Зробіть краше якусь гру на канвасі.

36 Востаннє редагувалося VTrim (13.01.2015 09:10:15)

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

0xDADA11C7 написав:

В звичайній серверній каптчі нічого цікавого немає.

Зробіть краше якусь гру на канвасі.

Створення нормальних ігор - це робота не на один день (а лінь).
Взагалі,погано,що початковий js/html код можуть легко зкопіювати.. (тобто всю твою роботу).
І немає ніякого захисту (по крайній мірі я не знаю)

37

Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP

VTrim написав:
0xDADA11C7 написав:

В звичайній серверній каптчі нічого цікавого немає.

Зробіть краше якусь гру на канвасі.

Створення нормальних ігор - це робота не на один день (а лінь).
Взагалі,погано,що початковий js/html код можуть легко зкопіювати.. (тобто всю твою роботу).
І немає ніякого захисту (по крайній мірі я не знаю)

Клієнт-серверна (або SaaS) найнезахищеніша із усіх видів архітектур.