Страница 2 из 16

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 12:26:03
sts
azsx писал(а):Для меня слишком круто учить go для написания чат бота.


да там учить нечего, отличия от паскаля косметические вместо record - struct, ООП немного странное - упрощенное до рекордов с методами, наследование заменено агрегацией.

Добавлено спустя 5 минут 41 секунду:
говорю же - достаточно опыта написания программ на паскале или бейсике в процедурном стиле, на го, через три часа будете клепать сервисы в припрыжку.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 12:36:26
vitaly_l
Лекс Айрин писал(а):Какая разница, если все это обрабатывается на стороне сервера?

есть команды, которые можно послать программе на сервере (спец. символы) и если их не удалить из message, то сервер откроет доступ или повиснет. Соответственно, получая message программа написанная на паскале, становится уязвимой для таких спец. символов и команд. PHP тоже уязвима, в этой области, но там 1 000 000 программистов решают эту задачу и есть несколько функций - чистящих запросы. А здесь автору придётся самому это всё искать и удалять.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 12:54:35
azsx
оффтопик
есть команды, которые можно послать программе на сервере (спец. символы) и если их не удалить из message

Как я понимаю это так хитро вы про утечку памяти пишете? Или про sql инъекции?

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 12:59:51
vitaly_l
azsx писал(а):Как я понимаю это так хитро вы про утечку памяти пишете? Или про sql инъекции?

Да, про SQL инъекции в том числе. Про утечку памяти не знаю, но вполне возможно, что там можно слать какие-то message, которые приведут к утечке памяти на паскалевской программе и в итоге к сбою сервера. пхп в этом отношении более защищён, т.к. там даже при наличии такого сбоя, сбойный скрипт, автоматом будет отключен, а программа на паскале повиснет до ручной перезагрузки её админом. Либо придётся писать надстройку в виде демона. И это только один из 1000 вариантов.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 13:04:03
azsx
В интернете ваще опасно, там вирусы кругом.
Логично погадаю, что утечки памяти в паскале нет. sql инъекции -- ага, надо фильтровать ввод пользователя. Для этого я и хочу json принимать.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 13:09:28
Лекс Айрин
vitaly_l писал(а):и если их не удалить из message, то сервер откроет доступ или повиснет. Соответственно, получая message программа написанная на паскале, становится уязвимой для таких спец. символов и команд.


а зачем их передавать программе? Да и бывает такое только если программа криво написана.

Добавлено спустя 1 минуту 42 секунды:
vitaly_l писал(а):а программа на паскале повиснет до ручной перезагрузки её админом.


Да ладно... в случае сбоя запустится обработчик.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 15:12:28
vitaly_l
azsx писал(а):Для этого я и хочу json принимать

В json тоже есть ограничения на допустимые данные, и json не фильтрует sql инъекции. Там как правило делают регулярки, удаляющие всё, что не буквы и не цифры, со знаками препинания. И даже этого будет мало.
Лекс Айрин писал(а):а зачем их передавать программе?

на этом построено общение клиент/сервер
Лекс Айрин писал(а):Да ладно... в случае сбоя запустится обработчик.

в случае сбоя, может повиснуть не только плохо написанная Лексом и Айрином программа на паскале но и весь сервер может рухнуть, если ...

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 16:01:43
Лекс Айрин
vitaly_l писал(а):на этом построено общение клиент/сервер


но сервер не обязан все отдавать на обработку... у него своя логика достаточно сложная.

vitaly_l писал(а):в случае сбоя, может повиснуть не только плохо написанная Лексом и Айрином программа на паскале но и весь сервер может рухнуть, если ...


Ты, случайно, язык не перепутал? На С это нормальное явление (там слабее встроенный контроль за ресурсами), но паскалевские программы имеют немного другую идеологию. И уронить другую программу им проблематично. Так что сбой из-за входной строки в паскалевской программе это нонсенс. А если просто подвесить... так это в любом языке реально. Тут дело в подходе. (например, если загрузить в memo слишком большой текст и полностью его обрабатывать. И даже в этом случае наверняка есть способы решения проблем)
И, кстати, плох тот сервер, который не контролирует свою загрузку и не перегружает периодически сервисы, дает им захлебываться данными... в общем, пускает дело на самотек.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 16:09:42
Mirage
Бери mORMot. Готовый фреймворк ,заточен под создание REST сервисов.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 18:06:13
pupsik
Mirage там некоторые вещи виндо зависимые, иные "онли дельфин".

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 25.05.2017 20:38:00
Mirage
Продвигается как кроссплатформенный. Поддержка FPC добавлена довольно давно. Вроде все, кроме некоторых видов RTTI, работает. Не знаю что именно от этого зависит, но попробовать стоит.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 26.05.2017 01:45:07
stanilar
Вообще говоря вопрос в большей степени абстрактен, чем конкретен.
Выбор между пхп и паскалем будет в ответе на вопрос, что именно надо писать.

Потому как есть много решений для паскаля именно в области построение серверов, но готовых решений вида вики нет. Так же нет готовых заготовок для авторизации и т.п. Если говорить про продакшн, то на паскале имеет смысл писать 1) внутренний сервис, который не будет виден снаружи 2) писать именно сервер, потому как встраивание длл-ок в апач или пхп затрудняет дебаг. При соблюдении этих двух пунктов читать особо нечего - кидаете на форму любой компонент по работе с интернетом и обрабатываете событие OnReceive + задаете конкретные вопросы в форум.

З.Ы. Если интерфейс построен на современном js фреймворке (angular, react), то тут разницы между пхп/явой/шарпом/паскалем/ноде будет очень немного. IMHO думаю даже что с современными возможностями серверов БД и клиентского js, любая прослойка между ними очень скоро станет лишней.

З.Ы.2 Причем сервис должен быть внутренним вовсе не потому, что программа может упасть или еще что-то похожее с ней случится (типа пресловутого инъекта). Но вот готовых решений для защиты от чего-то подобного DDOS атаки в паскале точно нет(типа авторизации).

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 26.05.2017 09:29:41
Лекс Айрин
stanilar писал(а): Но вот готовых решений для защиты от чего-то подобного DDOS атаки в паскале точно нет(типа авторизации).


Не поможет авторизация... когда дается отлуп сотням (тысячам), то даже неудачная попытка зайти (в сумме) может серьезно подвесить сервер. На этом и основан эффект DDOS атаки.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 26.05.2017 09:44:34
vitaly_l
stanilar писал(а):с современными возможностями серверов БД и клиентского js, любая прослойка между ними очень скоро станет лишней

Чёй-то меня гложет смутное сомненье в этом. Как это из JS напрямую обращаться к БД? Для этого, как минимум нужно в открытый доступ выложить пароль логин и название БД... Это уже даже DDOS атака ненужна будет, чтобы получить/испортить ЛЮБЫЕ данные. Разве что, дать доступ пользователю только на чтение БД? Но опять-таки, он будет видеть всю структуру и все таблицы... Так что, пока что без "прослойки" - это не реально.

Re: Как написать веб сервис на паскале?

СообщениеДобавлено: 26.05.2017 09:52:48
Ichthyander
Создавал-таки я подобную тему viewtopic.php?f=25&t=11057 , в итоге меня отговорили это делать на паскале.. :)