Потому что они от имени сервера это делают и как до меня дошло это делаеться либо через название товара или через коментарий где будет лежать например запрос на выдачу админки по типу (INSERT INTO)если запрос в бд - то скорее всего это скуль инъекция?
пиздец, мерумонд тыщу лет хуячит скрипты и там до сих пор легаси sql просто?
ебануца
если не сложно можешь примерно объяснить как от этого можно защититься кроме как запретить название у товара INSERT INTOесли запрос в бд - то скорее всего это скуль инъекция?
пиздец, мерумонд тыщу лет хуячит скрипты и там до сих пор легаси sql просто?
ебануца
Если в тупую:если не сложно можешь примерно объяснить как от этого можно защититься кроме как запретить название у товара INSERT INTO
ну давай попробуюесли не сложно можешь примерно объяснить как от этого можно защититься
так точно делать не надо, потому что это следствие а не причиназапретить название у товара INSERT INTO
public void RegisterUser(string username, string password)
{
string connectionString = "Server=localhost;Database=ragemp_db;User=inoi;Password=pidor;";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
// твой собсна запрос например такой
string query = $"INSERT INTO Users (Username, Password) VALUES ('{username}', '{password}')";
using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
cmd.ExecuteNonQuery();
}
}
}
testuser'); DROP TABLE Users; --
INSERT INTO Users (Username, Password) VALUES ('testuser'); DROP TABLE Users; -- ', 'пароль')
INSERT INTO Users (Username, Password) VALUES ('testuser');
DROP TABLE Users;
-- ', 'пароль')
public void RegisterUserSafe(string username, string password)
{
string connectionString = "Server=localhost;Database=ragemp_db;User=inoi;Password=nepidor;";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
string query = "INSERT INTO Users (Username, Password) VALUES (@username, @password)";
using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@password", password);
cmd.ExecuteNonQuery();
}
}
}
cmd.Parameters.Add("@username", MySqlDbType.VarChar).Value = username;
cmd.Parameters.Add("@password", MySqlDbType.VarChar).Value = password;
Там все радужно. Не следует стилистике проекта, городит повторяющийся функционал, делает свои библиотеки отдельными дллками непонятно нахуя. Рекомендую к покупкеМаркетплейс мерумонда есть в опен сорсе? Интересно на код взглянуть)
Мне тоже интересно нахуя. Давно заметил эту тему.)Там все радужно. Не следует стилистике проекта, городит повторяющийся функционал, делает свои библиотеки отдельными дллками непонятно нахуя. Рекомендую к покупке![]()
У нас 90% своих систем некоторые купили и мне скинули но просто только сейчас зашло за эту темуОн слитый поэтому и берут все кому не лень а т.к не покупали и предъявить не могут
Спасибо большое попробую реализоватьну давай попробую
так точно делать не надо, потому что это следствие а не причина
это как спид цитрамоном лечить
берём в пример какой то рандомный метод, который напрямую работает со скулём
C#:public void RegisterUser(string username, string password) { string connectionString = "Server=localhost;Database=ragemp_db;User=inoi;Password=pidor;"; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); // твой собсна запрос например такой string query = $"INSERT INTO Users (Username, Password) VALUES ('{username}', '{password}')"; using (MySqlCommand cmd = new MySqlCommand(query, conn)) { cmd.ExecuteNonQuery(); } } }
вот это - хуйня ебучая, написанная одноклеточным (мной)
начать можно в целом с того что использование легаси плайн sql - это уже диагноз в 2к25
но ну ладно
почему
потому что допустим это форма регистрации
если игрок в форму в поле логина вхуячит че то типа
SQL:testuser'); DROP TABLE Users; --
то твой итоговый запрос (то что у тебя в коде + то что нахуячил пользователь) будет выглядеть как
SQL:INSERT INTO Users (Username, Password) VALUES ('testuser'); DROP TABLE Users; -- ', 'пароль')
И он выполнится, и у тебя отлетит табличка Users соответственно к хуям
почему
потому что вот у тебя скуль парсит запрос
сначала он видит до первой ; -
в его понимании - всё заебись, нужно просто вставить юзернеймSQL:INSERT INTO Users (Username, Password) VALUES ('testuser');
он вставляет
потом следующий кусок
скуль думает - ага, дропнуть нахуй таблицу СЭР ЕСТЬ СЭРC#:DROP TABLE Users;
а вот это
он просто пропускает, потому что -- - это значок комментария в скуле который нужен просто чтобы закрыть кавычку вокруг твоего username и не отлететь в синтаксическую ошибкуC#:-- ', 'пароль')
Какие есть ну очевидно простые варианты
Параметризированный запрос
C#:public void RegisterUserSafe(string username, string password) { string connectionString = "Server=localhost;Database=ragemp_db;User=inoi;Password=nepidor;"; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); string query = "INSERT INTO Users (Username, Password) VALUES (@username, @password)"; using (MySqlCommand cmd = new MySqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@username", username); cmd.Parameters.AddWithValue("@password", password); cmd.ExecuteNonQuery(); } } }
че тут происходит
тут у тебя @username и @password - это плейсхолдеры, как замена значений
а AddWithValue(...) - вставляет их в запрос безопасно, потому что скуль знает, что это - значения, а не куски кода
и даже если твою хитрожопый игрок вхуячит всё тот же кусок кода с DROP TABLE - это будет просто строка, а не команда.
но это типа совсем как бы ну база
это не какая то там хитрость, это вообще единственный нормальный способ работы с скл
а ещё лучше вообще вот так
потому что типы иногда могут неправильно определиться ну и лучше точно типизироватьC#:cmd.Parameters.Add("@username", MySqlDbType.VarChar).Value = username; cmd.Parameters.Add("@password", MySqlDbType.VarChar).Value = password;
а вообще ну минимально есть ну я не говорю про ef уж ок, там видимо ковыряние редаги всё ещё (второй нахуй что ли?) - но ну ХОТЯ БЫ НАХУЙ Dapper
хуячить sqlcommand в современности это ну, я хуй знает даже как назвать
ну только если ты совсем опасный для прода новичек
если это р3, и при существующем там
госпаааади бляяять что там за фреймворк
а
а
а
а
я забыл
линк2дб во
если короче это в рамках р3 "скрипт" на легаси скл, то это вообще пиздец - там уже есть среда, которая позволяет разработчику работать с бд нормально без легаси-кода
а вообще на код надо посмотреть конечно чтобы че то чётче ответить
но базово это вот про это всё
а вообще ну, да спецсимволы можно и в форме цефки фильтровать (и нужно)
но в идеале - и нормально с бд работать хотя бы параметризированными запросами - и формы фильтровать на предмет всяких ; - и прочая, конечно
как-то плюс-минус так
Да не хочется писать маркет с 0 когда можно делать не в тупуюЕсли в тупую:
1) Поменяй название эвентов на клиенте и сервере
2) Поменяй название таблиц, названия колонок в них
3) Загрузи код в нейронку и попроси ее поискать в нем потенциальные уязвимости
А лучше вместо этого удали этот скрипт и все![]()
К сожалению, местами там всё ещё есть просто тупые запросы, которые никто не трогал сотню тысяч лет.если это р3, и при существующем там
госпаааади бляяять что там за фреймворк
а
а
а
а
я забыл
линк2дб во
если короче это в рамках р3 "скрипт" на легаси скл, то это вообще пиздец - там уже есть среда, которая позволяет разработчику работать с бд нормально без легаси-кода
Звучит сладко, но верится с трудомУ нас 90% своих систем некоторые купили и мне скинули но просто только сейчас зашло за эту тему
И правильно верится.Звучит сладко, но верится с трудом
ну он сказал 90% своих типа а не пижженых системИ правильно верится.
Если кто-то говорит, что использует редагу и там 90% переделанного "своих купленных систем", то это с вероятностью в те же 90% - не правда.
Какой смысл был брать готовый мод, чтобы потом переработать его на 90% и какая у этого должна быть стоимость (поочерёдно удалять каждый отдельный узел системы и переписывать его с нуля), ведь в таком случае мод с нуля стоил бы в несколько раз дешевле.
Ну это типа как иметь 10 систем, 9 из которых куплены. В формате целого игрового мода 9 систем это ничто.ну он сказал 90% своих типа а не пижженых систем
а не на 90% свой мод
то есть всё что им доделывали - доделывали именно им за бабки видимо
а не просто скаченное с паблика че то
Да я больше о том, что все чего не было в редаге по дефолту и есть в их сборке также слито в сети и фраза про купили выглядит несколько сомнительно. А про 90% - это смех вообще. Как я говорил в прошлой теме, ни один фикс любой сборки не сделает ее уникальной или тем более твоей. Владельцем в любом случае будет тот кто не написал/купил т.к огромный пласт кода принадлежит емуИ правильно верится.
Если кто-то говорит, что использует редагу и там 90% переделанного "своих купленных систем", то это с вероятностью в те же 90% - не правда.
Какой смысл был брать готовый мод, чтобы потом переработать его на 90% и какая у этого должна быть стоимость (поочерёдно удалять каждый отдельный узел системы и переписывать его с нуля), ведь в таком случае мод с нуля стоил бы в несколько раз дешевле.