Re: Пишемо CAPTCHA на HTML5 Canvas,JS,PHP
Давайте хацкери.
Замінив назви полів,запитів,файлів.
Зробив обфускацію.
http://mobilink.url.ph/cap.html
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → JavaScript, TypeScript, ECMAScript → Пишемо CAPTCHA на HTML5 Canvas,JS,PHP
Для відправлення відповіді ви повинні увійти або зареєструватися
Давайте хацкери.
Замінив назви полів,запитів,файлів.
Зробив обфускацію.
http://mobilink.url.ph/cap.html
Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?
Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?
Згоден. VTrim, щоб надійно було генерувати картинку треба на стороні сервера. Всі інші варіанти - це не захист, так бавлення із canvas.
upd
Крім того, використовуючи reCAPCHA ви допомагаєте оцифровувати книжки.
Таки да,браузер все одно видає початковий код)
Провальна ідея..
Так запит же йде на сервер від клієнта з готовою відповіддю в параметрі chex. Для чого так зроблено? Для чого на клієнті зберігати правильну відповідь?
А у вас є краще рішення для такої каптчі?)
А у вас є краще рішення для такої каптчі?)
VTrim написав:А у вас є краще рішення для такої каптчі?)
Зараз спробую щось накидати..
Переписав.
файл 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 'Все правильно';
}
VTrim, тепер правильну відповідь вже сервер присилає при завантаженні сторінки.
Не довіряйте щоб JavaScript звіряла правильну відповідь.
1. JavaScript повинна відправити серверу запит "давай капчу"
2. сервер дає цю капчу клієнту і зберігає дані в сесію (це здається у вас вже реалізовано)
3. клієнт відправляє запит на сервер запитуючи в нього "ну шо, правильно?"
4. сервер каже "так" або "ні".
Мабуть ми один одного не розуміємо через те, що... у вас що капчу малює JavaScript? Якщо так, то цим повинен займатись сервак.
VTrim, тепер правильну відповідь вже сервер присилає при завантаженні сторінки.
Не довіряйте щоб JavaScript звіряла правильну відповідь.
1. JavaScript повинна відправити серверу запит "давай капчу"
2. сервер дає цю капчу клієнту і зберігає дані в сесію (це здається у вас вже реалізовано)
3. клієнт відправляє запит на сервер запитуючи в нього "ну шо, правильно?"
4. сервер каже "так" або "ні".
Дякую за підказку,щось я жорстко протупив).
Я з самого початку попередив шо капча не є безпечною,знав де косяк.
Але чомусь в голову не прийшло зробити так як ви сказали.
Все вами сказане вже зроблено.
, ні, не так, ви ще не зробили що я перед останнім вашим постом написав
Моїм завданням було просто написати каптчу саме на канвасі).
В звичайній серверній каптчі нічого цікавого немає.
В звичайній серверній каптчі нічого цікавого немає.
Зробіть краше якусь гру на канвасі.
В звичайній серверній каптчі нічого цікавого немає.
Зробіть краше якусь гру на канвасі.
Створення нормальних ігор - це робота не на один день (а лінь).
Взагалі,погано,що початковий js/html код можуть легко зкопіювати.. (тобто всю твою роботу).
І немає ніякого захисту (по крайній мірі я не знаю)
0xDADA11C7 написав:В звичайній серверній каптчі нічого цікавого немає.
Зробіть краше якусь гру на канвасі.
Створення нормальних ігор - це робота не на один день (а лінь).
Взагалі,погано,що початковий js/html код можуть легко зкопіювати.. (тобто всю твою роботу).
І немає ніякого захисту (по крайній мірі я не знаю)
Клієнт-серверна (або SaaS) найнезахищеніша із усіх видів архітектур.
Для відправлення відповіді ви повинні увійти або зареєструватися