powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Sql инъекции
21 сообщений из 46, страница 2 из 2
Sql инъекции
    #38744264
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAlexey TominУ оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению.
Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю).
По-моему там есть некоторые оптимизации, которые умеют выделять параметры запроса, даже если они заинлайнены в SQL. Но, конечно, полагаться на эти фичи, не зная о них и не понимая того как они работают бессмысленно.

Опыт показал, что в 9ке их нет. К 10ке всё переписали по уму, так что не проверяли. И не хотелось :D
...
Рейтинг: 0 / 0
Sql инъекции
    #38744268
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПроверьте на рабочей базе, что будет, если в параметре to_hour придет вот такая строка:

Код: plsql
1.
"23:59:59', 'yyyy-mm-dd hh24:mi:ss'); DROP TABLE TSESSIONS; -- Comment to the end of the line"



должно выдать ошибку из-за первой же ';', потом to_hour рассчитывается как-то по другому и не зависит от параметров запроса.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744270
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDдолжно выдать ошибку из-за первой же ';', потом to_hour рассчитывается как-то по другому и не зависит от параметров запроса.

from_day заезжает в SQL как есть.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744277
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTID,

я не могу отправить подобный запрос, там стоит ограничение в два символа, и идет проверка на то что это не строка.
как еще можно отправить подобный запрос, только не удаление таблицы,
...
Рейтинг: 0 / 0
Sql инъекции
    #38744285
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдося не могу отправить подобный запрос, там стоит ограничение в два символа, и идет проверка на то что это не строка.

Поржал. Спасибо. "там" это на странице? А вы знаете что HTTP запросы можно посылать без страницы и без браузера?
А вы знаете что современные браузеры позволяют даже клиенту менять HTML страницы. Можно спокойно любую длину выставить.

Елдоскак еще можно отправить подобный запрос, только не удаление таблицы,
Это вообще не важно как отправить запрос. Важно что сервер реализован студентом, а не профессиональным Java программистом.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744289
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Елдос,
В приведенном выше примере параметры http запроса проходят валидацию, можно считать его относительно безопасным. Правда, что там в helper-е мы не знаем. А так - в первую очередь надо искать места, где параметры вставляются в запрос напрямую, например, при вводе символьной информации.
Возможные последствия - на картинке и дальше в пкомментариях :)
...
Рейтинг: 0 / 0
Sql инъекции
    #38744296
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,

в итоге все нормально по вашему.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744297
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

строку проверки from_day удалил дабы вместить код на форум
...
Рейтинг: 0 / 0
Sql инъекции
    #38744299
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

да вы правы
...
Рейтинг: 0 / 0
Sql инъекции
    #38744304
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на этом классе у меня пишет что есть возможность Подделка межсайтовых запросов
есть ли здесь такая возможность.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
public class Merchants extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html; charset=UTF-8");
        ServletContext application = getServletContext();
        HttpSession session = req.getSession();

        Document pageXml = DocumentHelper.createDocument();
        Element root = pageXml.addElement("page");
        Element merchants = root.addElement("merchants");

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            conn = DB1.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT SHOPNAME, SHOPURL, SHOPDESCRIPTION, IMAGENAME " +
");
            while(rs.next()) {
                Element merchant = merchants.addElement("merchant");
                merchant.addAttribute("name", rs.getString("SHOPNAME"));
                merchant.addAttribute("link", rs.getString("SHOPURL"));
                merchant.addAttribute("description", rs.getString("SHOPDESCRIPTION"));
                merchant.addAttribute("img", rs.getString("IMAGENAME"));
            }
        } catch (Exception ex) {
            System.err.println("Exception: " + ex);
        } finally {
            try {
                if(rs != null) rs.close();
                if(stmt != null) stmt.close();
                if(conn != null) DB1.freeConnection(conn);
            } catch (SQLException sqle) {
                System.err.println("SQLException: " + sqle);
            }
        }

        try {
            XslXmlTransformer.getInstance(resp, session, "template").writeHtml(pageXml, "merchants.xsl");
        } catch (Exception er){ System.err.println(er);}
    }
}
...
Рейтинг: 0 / 0
Sql инъекции
    #38744307
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосстроку проверки from_day удалил дабы вместить код на форум
Это не важно. Есть конкатенация, найдется и 100500 способов обойти валидацию. Просто перепишите код с использованием PreparedStatement и всё.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744310
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Елдосivanra,
в итоге все нормально по вашему.
Если это весь код сервера, то нужно проверить как работает Helper.isIP(ip), с остальным можно смириться (parseInt спасает). Но если в программе полно мест в том же духе, то дальше вступает в силу закон Мерфи
...
Рейтинг: 0 / 0
Sql инъекции
    #38744316
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов
есть ли здесь такая возможность.
Код: java
1.
2.
            rs = stmt.executeQuery("SELECT SHOPNAME, SHOPURL, SHOPDESCRIPTION, IMAGENAME " +
");



Кто погрыз код? Тут было самое интересное.

Елдос
Код: java
1.
2.
3.
        } catch (Exception ex) {
            System.err.println("Exception: " + ex);
        } finally {



Автора сего- разжаловать в дворники.

Елдос
Код: java
1.
2.
3.
4.
            try {
                if(rs != null) rs.close();
                if(stmt != null) stmt.close();
                if(conn != null) DB1.freeConnection(conn);



jdk6 уже не поддерживается, давно пора try with resources использовать
...
Рейтинг: 0 / 0
Sql инъекции
    #38744319
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraВ приведенном выше примере параметры http запроса проходят валидацию, можно считать его относительно безопасным.
Судя по тому, что сначала делают errorList.add, а затем errorList!=null там не все так прозрачно...
...
Рейтинг: 0 / 0
Sql инъекции
    #38744527
Iliyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin
У оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению.
Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю).

Подпишусь. Руки бы отбивал за конкатенацию)
Кстати, оценил RAC в этой связи - если нельзя переписать, то хоть можно вынести такую фигню на отдельную ноду, чтобы не мешалось.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744686
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов
есть ли здесь такая возможность.

Если вы про Cross-Site Request Forging (CSRF), то да, скорее всего есть. Вы ведь нигде не проверяете, что запрос пришел со страницы, подконтрольной вам а не хакеру (куки этого не отличат). "Скорее всего" - потому что проверка может делаться еще и фильтрами. Но если у вас возник вопрос, то фильтров скорее всего нет.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744787
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxkar,

подскажите пожалуйста как это можно это реализовать,
...
Рейтинг: 0 / 0
Sql инъекции
    #38744821
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominЕлдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов
есть ли здесь такая возможность.
Код: java
1.
2.
            rs = stmt.executeQuery("SELECT SHOPNAME, SHOPURL, SHOPDESCRIPTION, IMAGENAME " +
");



Кто погрыз код? Тут было самое интересное.

Елдос
Код: java
1.
2.
3.
        } catch (Exception ex) {
            System.err.println("Exception: " + ex);
        } finally {



Автора сего- разжаловать в дворники.

Елдос
Код: java
1.
2.
3.
4.
            try {
                if(rs != null) rs.close();
                if(stmt != null) stmt.close();
                if(conn != null) DB1.freeConnection(conn);



jdk6 уже не поддерживается, давно пора try with resources использовать

почему разжаловать
...
Рейтинг: 0 / 0
Sql инъекции
    #38744844
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдоспочему разжаловать

Потому что при ошибке (например БД упала) код выведет пустой набор данных, как-будто там ничего не нашлось. И ошибку в консоль, которую вряд ли кто читает и вообще на сервере в /dev/null часто идёт.

Вообще exception любой надо либо обрабатывать (пересоздавать коннект, менять запрос и т.п.), либо выводить пользователю (если он есть) в понятном виде- "ошибка соединения с базой данных") и информировать администратора (письмо, смс в конце концов) и выводить в лог.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744849
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominЕлдоспочему разжаловать

Потому что при ошибке (например БД упала) код выведет пустой набор данных, как-будто там ничего не нашлось. И ошибку в консоль, которую вряд ли кто читает и вообще на сервере в /dev/null часто идёт.

Вообще exception любой надо либо обрабатывать (пересоздавать коннект, менять запрос и т.п.), либо выводить пользователю (если он есть) в понятном виде- "ошибка соединения с базой данных") и информировать администратора (письмо, смс в конце концов) и выводить в лог.

понял спасибо.

могли бы показать как я могу в этом коду реализовать защиту от csrf
...
Рейтинг: 0 / 0
Sql инъекции
    #38745689
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосподскажите пожалуйста как это можно это реализовать,
Кого? Атаку или защиту? Атака у вас тривиально пройдет в виде <img src="your-site-url-with-params"/>. Даже не нужно уговаривать пользователя нажать кнопку. Либо похожие варианты для переходов по ссылке.

Для защиты читайте теорию:
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
и рекомендации по защите:
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Sql инъекции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]