старый Зенд и php 5.3 и выше

Dzen

Новичок
Приветствую,

Можно ли скрипт, который под Зендом, заставить работать на PHP 5.3 или каких-нибудь вариантах ниже?


под 5.2 всё работает, но под 5.2 не работает stream_context, а он нужен.

под 5.3 stream_context без багов, но с Зендом получаем:
Fatal error: Incompatible file format: The encoded file has format major ID 2, whereas the Loader expects 4 on line 0
 

Dzen

Новичок
но внутри скрипта Токен (пароль) для доступа к сервисам.
 

fixxxer

К.О.
Партнер клуба
но внутри скрипта Токен (пароль) для доступа к сервисам.
Один на всех? Пф... Кому очень надо, достать его - не проблема. Можно дезендером, можно пропатчив php, возможно, достаточно ранкита. Это security by obscurity.
Выдавай каждому свой ключик.

Шел 2016-й год...

http://php.net/eol.php
5.2 6 Jan 2011 5 years, 6 months ago
 

Dzen

Новичок
раззендить можно конечно, ну хотя бы от случайных совсем пионеров. Кому надо, тот конечно всё разЗендить и разЙонит), но так вряд ли будет кто морочиться с именно этим делом.

ключ там один, это ключ для приложения, которое подключается к Яндексу по API, так что разные ключи и т.д. делать не получится. Ключ этот выдаёт Яндекс на год для одного приложения.
 

fixxxer

К.О.
Партнер клуба
Ай ну сделай свое апи, которое принимает ключик юзера и параметры запроса, проверяет юзерский ключик и генерирует подпись для яндекса.
 

MiksIr

miksir@home:~$
Ну да, как-то странно... если продаешь скрипт, то приложение заводить сам пользователь должен, если сервис+скрипт, то как fixxer сказал.
 

Dzen

Новичок
@MiksIr, там суть такая с Токенами:
Регистрируешь Приложение (свою разработку) в Яндексе
Чтобы далее подключить Приложение к какому-либо аккаунту в Яндексе (своему хотя бы), нужно залогиниться в Яндексе в браузере по своей почте, и перейти по ссылке Приложения (разработки) также в браузере, и тебе выдадут твой личный Токен (пароль) для доступа этого Приложения к твоему аккаунту. И токен этот будет всегда один, на год. Менять его через API нельзя без использования рук.

Далее, приложение подключается к API Яндекса через SOAP используя это Токен, который получили.
# SOAP headers
$client->__setSoapHeaders(
array(
new SoapHeader('API', 'token', $token, false)
)
);

вот я не пойму как этот $token защитить, менять его постоянно нельзя 100%

Всё нормально работало до тех пор, пока было под Зендом и с PHP 5.2.
Яндекс сейчас меняет формат API на другую версию, и новая версия Яндекса некорректно работает с PHP 5.2 потому что в 5.2 баги со stream_context ( а оно нужно в новой версии API).
Следовательно, либо как-то править баги со stream_context в 5.2, но не ясно как, либо переходить на 5.3 и выше, но для него не работает Зенд.
Писать сервис по новой - пока что не вижу "света" впереди, картинка полностью не сложилась как это сделать, кроме общих представлений.
Если какие соображения, будьте добры, поделитесь конкретикой.
 

MiksIr

miksir@home:~$
Так вот тот, кто использует скрипт, пусть и получает свой токен и вводит его в приложение
 

AmdY

Пью пиво
Команда форума
токен можно хранить в зашифрованном виде, расшифровывается паролем пользователя. хотя как писал fixxxer, при желании и доступе к серверу, проблем выловить момент с сырым токеном нет.
 

fixxxer

К.О.
Партнер клуба
MiksIr предлагает самое вменяемое. Но если так почему-то нельзя, можно сделать свой soap-прокси. Пусть твой этот скрипт передает в токене не яндексовский, а твой токен и стучится на твой хост. Дальше проверяешь там этот токен по своей базе, заменяешь фиксированный токен твоего приложения и проксируешь на яндекс.
 

Dzen

Новичок
@AmdY, а пока речь хотя бы про одного пользователя.
Алгоритм расшифровки пароля ведь будет хранится в скрипте, и при доступе к скрипту будет не сложно расшифровать токен.

Поэтому наверно только либо зенд/йон, либо подключение через свой удалённый сервис, но удалённый вроде бы не так просто, т.к. Яндекс отдаёт массивы данных, их нужно получать обратно, обрабатывать скриптом и обратно отсылать. Хотя при удалённом своём сервисе, опять же гонять всё по сети дополнительно, хорошо ли.

стучится на твойхост. Дальше проверяешь там этот токен по своей базе
так на своём хосте токен в базе тоже будет:), причём там тогда будет весь механизм подключения к Яндексу, (что и куда подключается и сам Токен).
То есть, посмотрев туда, станет всё ясно.
 

MiksIr

miksir@home:~$
так на своём хосте токен в базе тоже будет:), причём там тогда будет весь механизм подключения к Яндексу, (что и куда подключается и сам Токен).
То есть, посмотрев туда, станет всё ясно.
А ты не давай туда смотреть.
 

AmdY

Пью пиво
Команда форума
ранкитом подменят SoapHeader, добавят скрипт в auto_prepend_file и всё.
боишься что с базы утянут, храни в зашифрованном виде, а ключик в php скрипте, и не надо страдать излишним фанатизмом, всё равно это бесполезно.
 

fixxxer

К.О.
Партнер клуба
В зенде есть флаг, запрещающий использовать незенденный (или зенденный другим ключом) код совместно с этим зенденным файлом. Так что, так просто не получится. Чуть сложнее. Но все равно просто :)
 
Сверху