Strelec
Создатель
- Регистрация
- 8 Июн 2008
- Сообщения
- 25
- Реакции
- 6
Во вложении два варианта русского и английскийа где можно русский или английский достать?
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Во вложении два варианта русского и английскийа где можно русский или английский достать?
Недавно поймал багу в скрипте торговца (marchand.php). Там логическая ошибка.
Продаваемый ресурс можно увеличить на любое число, достаточно лишь подделать html форму и добавить инпут с названием продаваемого ресурса (либо просто в ПОСТ передать его). Пробежался по десятку серверов иксновы - везде где есть торговец, есть и эта ошибка.
Вариантов решения проблемы множество, приводить примеры решения не буду - вопрос решается за пару минут. Сам скрипт довольно компактен, найдет проблему любой, кто мало-мальски знает php и умеет думать.
Надеюсь никому плохо не сделаю.Для наглядности породемонстрируй баг вместе с решением, спрятав в Hide от 5 месаг.
Если это не слова, конечно.
<html><head><b>Накрутка ресурсов</b></head><body>
<form id="marchand" action="http://*******/marchand.php" method="post">
<input type="hidden" name="ress" value="blabla">
Металл <input name="metal" type="text" value="0"/><br />
Криста <input name="cristal" type="text" value="0"/><br />
Дейтер <input name="deut" type="text" value="0"/><br />
<input type="submit" value="Добавить" />
</form>
</body></html>
$Error = false;
switch ($_POST['ress']) {
case 'metal':
/*...*/
case 'cristal':
/*...*/
case 'deuterium':
/*...*/
}
// А у нас было просто bla-bla. Свитч просто проскочили...
// И дальше
if ($Error == false) {
/*...*/
$CurrentPlanet['metal'] += $_POST['metal'];
$CurrentPlanet['crystal'] += $_POST['cristal'];
$CurrentPlanet['deuterium'] += $_POST['deut'];
/*...*/
$QryUpdatePlanet = "UPDATE {{table}} SET ";
$QryUpdatePlanet .= "`metal` = '". $CurrentPlanet['metal'] ."', ";
$QryUpdatePlanet .= "`crystal` = '". $CurrentPlanet['crystal'] ."', ";
$QryUpdatePlanet .= "`deuterium` = '". $CurrentPlanet['deuterium'] ."' ";
$QryUpdatePlanet .= "WHERE ";
$QryUpdatePlanet .= "`id` = '". $CurrentPlanet['id'] ."';";
doquery ( $QryUpdatePlanet , 'planets');
}
Как пофиксить? default в switch - это раз. Обнулять переданное значение продаваемого ресурса - как вариант, два.