У меня есть алгоритм калькулятора почтовых расходов, написанный на PHP. Одна из наших ассоциированных компаний хотела использовать его, поэтому узнала код через HTTPRequest на наш сервер.
Как можно увидеть код PHP таким образом?
Я знаю немного кода PHP и т. Д., Но я немного озадачен тем, как они получат доступ к коду.
Когда я спросил их о том, как они получили доступ к моему алгоритму, они ответили:
«Мы отправляем HTTP-запрос на ваш сервер, аналогичный запросу, отправляемому вашими веб-страницами».
Тем не менее, когда я отправляю HTTPRequest, я просто получаю JavaScript, HTML и т. Д., А не мой PHP.
Извините за сайт — я его не спроектировал — очень старая вещь — я просто исправляю вещи с сервера.
Вот ссылка на страницу
http://www.directbuy.com.au/product_info.php?products_id=1042
Если кто-то может сообщить мне, если они могут найти мой почтовый калькулятор, то дайте мне знать, как вы, если вы сделали?
Через HTTP-запрос и ответ они будут видеть только ввод и вывод, но не код PHP, так как PHP интерпретируется на стороне сервера.
Это означает, что они могли бы потенциально перепроектировать алгоритм. Например, если я отправил услугу 2 и получил 4, затем отправил 4 и получил 16 и т. Д., Я мог бы быть в состоянии провести обратный анализ математики, стоящей за этим (в этом примере квадратная функция).
Если им удастся получить доступ к вашему серверу без прохождения через PHP-сервер, они также смогут загрузить исходный файл PHP. Например, файл PHP на сервере Apache Tomcat (сервер Java) будет использоваться как простой текст и, следовательно, будет раскрывать код.
Похоже, они просто отправляют запрос, используя информацию из этой формы:
<form id="postage_form" action="product_info.php?&products_id=1042" method="post">
<input type="hidden" id="sub_postcode" name="postcode" value="" />
</form>
и затем очищаем результат для значения этого ввода:
<input id="v_result" size="10" value="" type="text">
Вероятно, с чем-то вроде этого:
<?php
$postcode = "2060";
$url = "http://www.directbuy.com.au/product_info.php?products_id=1042";
$name = "postcode";
$result_id = "v_result";
$post_values = array($name => $postcode);
$page = url_get_contents($url,$url,$post_values);
$dom = new DomDocument;
@$dom->loadHTML($page);
$xp = new DOMXpath($dom);
$nodes = $xp->query("//input[@id='$result_id']");
$result = $nodes->item(0)->getAttribute('value');
var_dump($result);
Возвращает string(5) "$40.7"
Замечания: url_get_contents
это пользовательская функция, которая использует cURL