Как да защита страница?

realdark

Member
Здр.

Проблема е следния. Имам браузърна онлайн игра като плащането за получаване на кредити става чрез смс. Влиза клиента в страницата където е скрипта на fortumo.com, праща смс и след успешно пращане е препратен към страницата която добавя кредити в акаунта му. Въпроса ми е как да защита тази страница за да не я пише клиента ръчно в полето и да си добавя кредити безплатно когато си поиска. Дано сте ме разбрали :).
 
От: Как да защита страница?

Колега поне аз нещо немога да схвана или се обърквам. Направи го нещо подобно.

- клиента влиза в страницата за пращане на СМС
- праща СМС -> скрипта ти му връща СМС с някакъв уникален код
- потребителя въвежда получения уникален код <> системата проверява кода => добавя му кредити

Като може да си го направиш и мултифункционално: 1,20лв смс => 10 кредита; 2,40лв смс => 20 кредита

Нещо подобно.
 
От: Как да защита страница?

Системата работи така.

Избираш колко кредита искаш -> Пишеш си номера -> Системата изчаква да получи смс-а от твоя номер -> След което те пуска към страницата която добавя автоматично 10 кредита в базата данни.

Въпроса ми е, че всеки който види url-то на тази страница може да си я напише в бара колкото пъти си иска и да си добави кредити. Някак си тряба да я защита. Например да могат да влизат само хора които са редиректнати от платежната система с адрес fortumo.com... от никой друг адрес да не може да се влиза.

Днес ми е нещо трудно да се обяснявам сори.
 
Последно редактирано:
От: Как да защита страница?

Значи аз ти предлагам следното:

1. Щом клиента праща СМС => има регистрация
2. Клиента(регистриран - нарочно го удебелявам, защото наблягам на тази дума), трябва да си напише номера, системата следователно записва някъде този номер(предполагам в БД?)
3. Клиента праща СМС, системата му проверява номера и му дава линк към страница, която фактически е някакъв скрипт, който му добавя 10те кредита?
4. Тук е същинската част - направи самият СКРИПТ да проверява в БД(или там където се записва номера), дали потребителя е изпратил СМС и само АКО е изпратил да се изпълнява скрипта.
5. След всяко добавяне на кредитите скрипта предлагам да ти завършва с изтриване на информация от БД за номера/изпратения СМС, защото иначе пак ще се лъже и ще може да се пуска СЛЕД 1-вия пратен СМС


Това е само един от начините все пак. Незнам дали ще ме разбереш и аз не съм много по обясняванията :) успех
 
<?php //set true if you want to use script for billing reports //first you need to enable them in your account $billing_reports_enabled = false; // check that the request comes from Fortumo server if(!in_array($_SERVER['REMOTE_ADDR'], array('81.20.151.38', '81.20.148.122', '79.125.125.1', '209.20.83.207'))) { header("HTTP/1.0 403 Forbidden"); die("Error: Unknown IP"); } // check the signature $secret = ''; // insert your secret between '' if(empty($secret) || !check_signature($_GET, $secret)) { header("HTTP/1.0 404 Not Found"); die("Error: Invalid signature"); } $sender = $_GET['sender']; $message = $_GET['message']; $message_id = $_GET['message_id'];//unique id //hint:use message_id to log your messages //additional parameters: country, price, currency, operator, keyword, shortcode // do something with $sender and $message $reply = "Thank you $sender for sending $message"; // print out the reply echo($reply); //customize this according to your needs if($billing_reports_enabled && preg_match("/Failed/i", $_GET['status']) && preg_match("/MT/i", $_GET['billing_type'])) { // find message by $_GET['message_id'] and suspend it } function check_signature($params_array, $secret) { ksort($params_array); $str = ''; foreach ($params_array as $k=>$v) { if($k != 'sig') { $str .= "$k=$v"; } } $str .= $secret; $signature = md5($str); return ($params_array['sig'] == $signature); } ?>
Те хората са си го написали...
Ама форума и той го вади душманската нещо.
Ето ти линк. На него можеш да видиш примерния скрипт: http://fortumo.com/api/spec
 
От: Как да защита страница?

Можеш да "заключиш" изпратения код по браузърска сесия и при въвеждането на кода да гледаш дали потребителя е от същия браузър. Това хубаво, ама ако се забави SMS-а и юзъра затвори тоя браузър си губи парите.

Ако клиента е регистриран, можеш в изпратения код да му слагаш user_ID-то. Примерно кода става MD5(user_id) + MD5(нещо-друго). При получаване можеш да го проверяваш дали е твоя човек.
 

Горе