Денис
Ребят, всем привет! Запускается интересный проект - аренда мощностей компьютеров для облачного гейминга. Сейчас идёт набор на тестовый запуск. Нужно 10 машин с параметрами: Процессор: i5 и выше ( Intel / AMD ) Видео-Карта: 1 GB+ , высокая частота шины (NVidia / AMD ) Оперативная память: 8GB+ Жесткий диск: от 600 GB и пропускной способностью 1600+ У кого есть такая машинка и кому интересно после на ней зарабатывать, пишите в личку. Отвечу на все вопросы
fgntfg
1. причем тут луа?
Snusmumriken
2. Зачем кому-то давать свою машину в юзание? У меня, например, такая машинка - основной рабочий инструмент. А если кто-то и будет покупать такие железки - наверное будет использовать как можно чаще, ибо железки - дорогие. Тут уж не дашь другим в облаке поиграть. 3. Качество интернета учли? Тот факт что чужая машинка может находиться в Сибири, подключённая к 3g, и пинг - омерзительный? Ну, просто если бы я был организатором подобного счастья - я бы развернул парк серверов, которые должны это считать, ибо так достигается хоть какая-то надёжность. В домах обычных людей - отключается интернет, отключается электричество (эти компы ещё и жрут огромные объёмы всего подряд), интернет сам по себе херового качества и всё такое. А переключать игрулю на лету с одной машины на другую - это надо виртуализацию ебошить (и дамп памяти каждые N секунд переносить туда-сюда, на какие-то свои серверы, что резко снижает производительность, повышает энергопотребление и бешеный траффик), в момент переключения - у играющего лаги бешеные, или заставочка: "Подождите, сервер переподключается!". В общем, имхо, тема аренды пользовательских компов хороша для, например, проверки транзакций биткоинов (ибо не важно, включён ли в данный момент пека, если половина из всех компов в сети ответила положительно - транзакция прошла), но вот для стриминга - хреновато. Хотя ещё я думаю что это - бот.
Денис
Нет, не бот. Кому интересно https://vk.com/wall7425747_3360
Alexander
Нет, не бот. Кому интересно https://vk.com/wall7425747_3360
А ещё поучаствовать в Лос атаках и сесть 😁
Saphire
Где-то на хабре было кстати
Saphire
Ну, "гиктаймс"
Anonymous
твоё лицо, когда сканер обнаруживает SQL-инъекцию
Anonymous
ты отдаёшь 300€ за детальное описание
Anonymous
а оказывается, что ты наебал сам себя :>
Anonymous
mva
лол
mva
алсо, 300€ за детальное описание - ппц
Anonymous
за лицензию сканера, там не только описание
Anonymous
неограниченое кол-во сканов и т.д.
Anonymous
сканер полезный, справедливости ради, нашёл пару XSS, но это было видно и из бесплатной версии
Мерль
[last news] Lua code: security overview and practical approaches to static analysis [pdf](http://spw17.langsec.org/papers/costin-lua-static-analysis.pdf)
Roman
Snusmumriken
Ну блин, в любых яп доступны sql-инъекции, если не экранировать пользовательскую фигню и не проверять права доступа и прочую лабудонь. function findUserMessages(text) data = sql.exec('select * from textmessages where text contains '..text) return data end Ну типа везде где есть прямая конкатенация - стопудово есть шанс инъекции. В sql, помнится, можно экранировать через '`'. Ну, типа этот вариант как бы должен быть не так уязвим. function findUserMessages(text) local req = 'select * from msg where text contains `%s`' data = sql.exec(req:format(text:gsub('`', '#≈'))) return data:gsub('#≈', '`') end
Roman
gsub(val, '"', '\\"')
Roman
\\" — вроде достаточно, нет?
Snusmumriken
Ну, экранирование в sql (которое полностью нивелирует все остальные управляющие символы) - это апостроф. Достаточно заменять апострофы в пользовательском тексте, на остальное - начихать.
Roman
никогда апострофов не видел! можно ссылку?
Roman
пишу под постгрес
Roman
и правда, в mysql текст апострофами обозначается! но можно ведь их изящнее экранировать, чем #≈, mysql не всегда можно просто заменить
Alexey
Есть ситуации где это может не помочь
Alexey
зависит от СУБД, кодировки бд, параметров подключения
Alexey
Используйте параметры и не будет проблем Так же это удобнее и читаемее на мой взляд
Anonymous
если в постгресе текст заключен в кавычки, что можно еще делать кроме экранирования кавычек?
Roman
Я вот когда текстовый параметр вставляю в sql, заменяю все ' на '', по-моему, инъекцировать тут вовсе ничего не выйдет. В других базах другие кавычки, смысл тот же
Anonymous
where test = 'something'
Anonymous
заменяем все ' на входе на ''
Anonymous
что еще сделать можем?
Snusmumriken
Ну да, общая суть примерно такая. where test = ('"%s"'):format(something:gsub('"', '\\""'))
Anonymous
ну я на инпуте извне все ' заменяю на ''
Alexey
https://siderite.blogspot.com/2013/01/why-doubling-single-quotes-is-not.html
Alexey
Не понимаю почему нельзя пользоватся параметрами
Anonymous
весь код переписывать
Anonymous
ну такое
Roman
Что-то никак не пойму по этой статье как они хакают строки, объясните?
Anonymous
нужно написать функцию для выстрела себе в ногу
Anonymous
и воспользоваться ей
Roman
значит, gsub ', '' все ещё безопасен и параметры не нужны, чудненько
Anonymous
ну вроде как да
Anonymous
вообще постгрес в этом плане хорош
Roman
да он вообще во всех планах красавчик
Alexey
https://ilia.ws/archives/103-mysql_real_escape_string-versus-Prepared-Statements.html
mva
Используйте параметры и не будет проблем Так же это удобнее и читаемее на мой взляд
я именно так, кстати, и делаю. Точнее nginx-postgres и из кода дёргаю его локейшны с параметрами :)
Anonymous
чй чат умер? :(
Snusmumriken
Нет, в нём ещё много спамеров : )
Snusmumriken
А я на днях попробую записать что-то похожее на мануал по сокетам, типа, видеоурок "Пишем http-сервер, вводный курс для дебилов".
Roman
А я сишку учу, буду рад твоему курсу, если он на сишке!
fgntfg
Слушаете 80 порт, Читаете заголовки, Открываете RFC чтоб ответить правильно ??? Охуеваете^WИзобритаете велосипед^W^WПрофит!
fgntfg
Рома Язык не главное, главное понимание алгоритмов
fgntfg
ага, и в том месте его применять
Snusmumriken
Хех, я ведь про ДЕБИЛОВ говорю, которые не могут просто открыть википедию и прочитать, а понять им нужно ))) 1. Сокет - это типа файла или некоторого устройства, которое программа арендует у операционной системы. Айпи - адрес пека, порт - адрес приложения, на конкретном пека, поэтому открыть несколько программ арендующих один и тот же порт не выйдет (точнее, выйдет, но через жопу). Когда мы что-то пишем сокетом, с другой стороны это можно прочитать (если дошло) 2. TCP. Потоково-ориентированный протокол. Потоковый - значит тут нет деления на отдельные сообщения, то что мы пишем - просто дописывается в конец буфера на другом конце провода, и программы сами определяют, что является разделителем. Чаще всего - \r\n. 3. UDP - сообщенько-ориентированный протокол, бла-бла. 4. Протокол http (заголовки, что они значат, содержимое, post/get/body/querry и прочая хуета) 5. Библиотека luasocket, что это такое, что там есть. 6. Слушаем 80 порт, 7. Читаем заголовки, 8. Открываем RFC чтоб ответить правильно ??? Охуеваем^WИзобритаем велосипед^W^WПрофит!
fgntfg
В tcp/udp уходить не надо. Это уже борсч
fgntfg
видел я людей у которых инкапсуляция портоколов была вся пофачена в голове
fgntfg
чем меньше знают, тем лучше
Tverd
Почему не надо? Я бы почитал что-нить приятное по RUDP. Но по голому UDP наверно смысла нет
Alexey
http over udp
Snusmumriken
Почему не надо? Я бы почитал что-нить приятное по RUDP. Но по голому UDP наверно смысла нет
Я написал RUDP ))) Похоже на эту фигню, только чутка сложнее: проверки хешей, куча флагов (нужно подтверждение/не нужно) и т.п. https://habrahabr.ru/post/250227/
Snusmumriken
В tcp/udp уходить не надо. Это уже борсч
А я - с презентацией и схемками, что где находится, в несколько этапов )))
Tverd
Я знаю что написал, просто еще бы описать - что есть что, зачем и почему, при желании, конечно
Snusmumriken
Ну глянь в том протоколе, описано что-почему.
Snusmumriken
Ой, а схема передачи у меня как раз проще. 1. Один передаёт пять пакетов, третий теряется, в пятом - запрашивает подтверждение приёма. 2. Второй отвечает: "последний принятый пакет - второй" 3. Первый продолжает передачу с третьего пакета Это не очень оптимально, согласен.
Tverd
Кстати, пока вспомнил, кто-нить юзал движок Gideros?
fgntfg
обычно хватает чтения RFCшек (чтоб понять что в рот оно всё ебись, беру готовое)
Snusmumriken
Да, RFC тоже можешь глянуть.
Snusmumriken
обычно хватает чтения RFCшек (чтоб понять что в рот оно всё ебись, беру готовое)
а) Мне нужен был протокол поверх udp, чтобы использовать тот же luasocket с udp, и не фигачить кучу новых сишных либ/расширений луасокета (пользуюсь одновременно большим количеством платформ). б) Лимит на длину сообщения - 65529 байт (6 на заголовок). Это офигенно мало, я своим протоколом передаю гигабайты, в одном сообщении. в) я не хочу терять возможность принимать и отправлять обычные udp-сообщения на данный порт, иначе я не смогу, например, пробивать соединение через NAT. г) RUDP из RFC не умеет в приём коротких сообщений без подтверждения, в моментальное использование принятого, если соединение ещё открыто а мы уже всё приняли, и всё такое
Alexey
tftp?
Alexey
Но в общем писать свой протокол это весело :)
Snusmumriken
tftp?
Ориентирован на "дай фигню" -> "держи фигню", а не "вот тебе крошечная и незначительная или ниибацца огромная и ужасно нужная куча фигни, сделай с ней что-нибудь"
Snusmumriken
Но в общем писать свой протокол это весело :)
Особенно отладка и байтоёбство.
fgntfg
отладка совего кода - самый сок
fgntfg
особенно если ошибка в один символ где-то
Snusmumriken
особенно если ошибка в один символ где-то
Логическая ошибка - это проблема. Но просто тыкаешь кучу логов, смотришь где начинается неправильное. Логи эффективнее тыкать не просто как "текст", но и с мини-трейсбеком.
Alexey
Тесты для реализации протокола необходимая вещь