powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Sql инъекции
46 сообщений из 46, показаны все 2 страниц
Sql инъекции
    #38743095
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При сканировании сети на сайте в котором я являюсь администратором обнаружили sql уязвимость.
где искать уязвимость, есть отдельный класс который использует combopooleddatasource для соединения.
возможно ли через этот пул провести инъекцию.
нужно ли ставить какие то дополнительную защиты вроде фильтрации имени пользователя и пароля и других данных.
...
Рейтинг: 0 / 0
Sql инъекции
    #38743104
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSource к SQL инъекциям отношения не имеет. Ищите конкатенацию строк при построении SQL запросов.
...
Рейтинг: 0 / 0
Sql инъекции
    #38743119
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос,

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

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

bad
Код: java
1.
ps = connection.prepareStatement("UPDATE table_name SET status="+someVar.toString()+" WHERE status="+otherVar.toString());


good
Код: java
1.
2.
3.
ps = connection.prepareStatement("UPDATE table_name SET status=? WHERE status=?");
ps.setString(1,"someString);
ps.setString(2,"otherString);
...
Рейтинг: 0 / 0
Sql инъекции
    #38743198
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ваш классик коннкешена скорее всего не иметт никакого отношения к инъекции, вам же говорят, что дело в запросах выполняюшихся через этот коннекшен, ищите там откуда они приходят, ну если это конечно не шелл
...
Рейтинг: 0 / 0
Sql инъекции
    #38743301
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕлдосПри сканировании сети на сайте в котором я являюсь администратором обнаружили sql уязвимость.
где искать уязвимость, есть отдельный класс который использует combopooleddatasource для соединения.
возможно ли через этот пул провести инъекцию.
нужно ли ставить какие то дополнительную защиты вроде фильтрации имени пользователя и пароля и других данных.

а url по которому уязвимость проявилась инструмент не показал ?
...
Рейтинг: 0 / 0
Sql инъекции
    #38743311
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосгде искать уязвимость
- проверить не развод ли это. Закомментировать все вызовы и дать им URL опять.
- пример инжекции может быть такой, как подзапросы в запросе
https://www.google.com/search?q=gjlpfghjc d pfghjct&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a&channel=sb#newwindow=1&rls=org.mozilla:ru:official&channel=sb&q=подзапрос в запросе&spell=1
...
Рейтинг: 0 / 0
Sql инъекции
    #38743390
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDivergood
Код: java
1.
2.
3.
ps = connection.prepareStatement("UPDATE table_name SET status=? WHERE status=?");
ps.setString(1,"someString);
ps.setString(2,"otherString);



Далеко не панацея. :)
1. Можно сохранить javascript, который потом вычитается у другого пользователя и ненароком выполнится.
2. Ну или не javascript, а какая-нибудь процедура (функция/триггер) в базе, которая вдруг бац и все же выполнит написанный код при составлении отчета (например вычисляя самописный агрегат или произведение значений столбца при обходе по дереву).
...
Рейтинг: 0 / 0
Sql инъекции
    #38743450
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

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

от классического sql injection - как раз панацея :) Не путать с XSS!
Вот хранимки да, отдельная песня, т.к. там удобные prepared statement-ы не предусмотрены конструкцией. Вот, например, интересная ссылка: http://bobby-tables.com/plsql.html
...
Рейтинг: 0 / 0
Sql инъекции
    #38743734
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
нет этого не показал
...
Рейтинг: 0 / 0
Sql инъекции
    #38743737
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiver,
понял, спасибо
...
Рейтинг: 0 / 0
Sql инъекции
    #38743889
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfСергей Арсеньев,

от классического sql injection - как раз панацея :) Не путать с XSS!
Вот хранимки да, отдельная песня, т.к. там удобные prepared statement-ы не предусмотрены конструкцией.

Как не предусмотрены? Всё там есть.

scfВот, например, интересная ссылка: http://bobby-tables.com/plsql.html

"Bind Variables" называются. А писать, как там в примере- это можно сервер уронить хорошо, даже без инъекций.
Наблюдал переписывание функции с конкатенации на bind Variables с ускорением на пару порядков (да, в 100 раз- оптимизатор при конкатенации каждый раз мучается, плюс кэш переполняется, а с переменными- один раз, всё быстро).

Другое дело, что вызывая любой код (не только pl/sql), хорошо бы быть уверенным, что писал его не студент (вот в моём примере так и было, кстати), а знающий человек.
...
Рейтинг: 0 / 0
Sql инъекции
    #38743980
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,

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

Весело у вас :D
Вот примеры от авторов :)
...
Рейтинг: 0 / 0
Sql инъекции
    #38744047
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,

А чем это в принципе может быть быстрее? Это даже не prepared statement, это при каждом вызове ХП компиляцию делать надо... При том, что обычные ХП компилируются в C.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744109
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
public class Sessions extends Template {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doPost(request, response);
    }

    @Override
    protected void run(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        try {
            template = "sessions.xsl";
            ActionTime actionTime = ActionTime.getInstance();
            Element source = pageXml.getRootElement().addElement("source");
            Element result = pageXml.getRootElement().addElement("result");

            String limit = request.getParameter("limit");
            String from_day = request.getParameter("From_day");



            if (Helper.isNull(limit)) limit = "100";
            else if (Helper.isInteger(limit)) {
                int x = Integer.parseInt(limit);
                if (x < 1) errorList.add("LAST: введенные значение не является числом.");
            } else errorList.add("LAST: введенные значение не является числом.");

            if (Helper.isNull(from_hour)) from_hour = actionTime.getHour();
            else if (Helper.isInteger(from_hour)) {
                int x = Integer.parseInt(from_hour);
                if (x < 0 || x > 23) errorList.add("FROM_HOUR: введенные значение больше 23 или меньше 0.");
                else from_hour = Helper.fillZero(2, from_hour);
            } else errorList.add("FROM_HOUR: введенные значение не является числом.");


            Element from = source.addElement("from");
            from.addAttribute("day", from_day);
            from.addAttribute("month", from_month);


            String ip = request.getParameter("ipaddress");
            String card1 = request.getParameter("card1");
            String card2 = request.getParameter("card2");


            source.addAttribute("limit", limit);
            source.addAttribute("ipaddress", ip);
            source.addAttribute("card1", card1);

            String from_date = from_year + "-" + from_month + "-" + from_day + " " + from_hour + ":00:00";
            String to_date = to_year + "-" + to_month + "-" + to_day + " " + to_hour + ":59:59";

            String sql = "SELECT sess.*, trans.ABONENT_ID, trans.TIMES, trans.MOD, merch.MERCHANTNAME, bin.BANK " +
                    "FROM (( TSESSIONS sess LEFT JOIN TBIN bin ON sess.BIN = bin.BIN ) " +
                    "LEFT JOIN TMERCHANTS merch ON sess.MERCHANTID = merch.MERCHANTID ) " +
                    "LEFT JOIN TTRANSACTIONS trans ON sess.RNN = trans.REFERENCE " +
                    "WHERE sess.ENTERDATE >= to_date('" + from_date + "', 'yyyy-mm-dd hh24:mi:ss') " +
                    "AND sess.ENTERDATE <= to_date('" + to_date + "', 'yyyy-mm-dd hh24:mi:ss')";

            if (ip != null && !ip.equals("")) {
                if (Helper.isIP(ip)) sql += " AND sess.PAYERIP = '" + ip + "'";
                else errorList.add("IPADDRESS: введенные значение не является IP адресом.");
            }
  

            sql += " AND ROWNUM <= " + limit + " AND sess.SECUR!='HB' AND sess.MERCHANTID != '96454601' AND sess.MERCHANTID != '96454602'" +
                    " AND  sess.MERCHANTID != '96454603' AND sess.MERCHANTID != '96454604' AND sess.MERCHANTID != '96454605'" +
                    " ORDER BY sess.ENTERDATE DESC";

            if (errorList != null && errorList.size() == 0) {
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Element item = result.addElement("item");

                    item.addAttribute("ssr", Helper.replaceNull(rs.getString("CHOICE")).replaceAll("-", " "));
                    item.addAttribute("baner", Helper.replaceNull(rs.getString("BANER")));
                    item.addAttribute("alert", Helper.replaceNull(rs.getString("ALERT")));
                    item.addAttribute("server", rs.getString("SERVER") + " " + Helper.replaceNull(rs.getString("MOD")));

                    String transtype = "";
                    if (rs.getInt("TRANSTYPE") == 7) transtype = " conf";
                    int process = rs.getInt("PROCESS");
                    String strProcess = "";
                    switch (process) {
                        case 0:
                            strProcess = "no action";
                            break;
                        case 1:
                            strProcess = "err no 3D";
                            break;

                    }

                    String rc = Helper.replaceNull(rs.getString("RESULTCODE"));
                    String resultCode = (rc.length() > 1) ? "(" + rc + ")" : rc;
                    item.addAttribute("process", strProcess + resultCode);

                    if (process == 3 || process == 5 || process == 7 || process == 9)
                        item.addAttribute("clientpays", rs.getString("TIMES"));
                    else item.addAttribute("clientpays", "");

                        item.addAttribute("bgcolor", "#FB4848");
                    item.addAttribute("secure", secure + " " + bank);
                }
            }
        } catch (SQLException sqle) {
            out.println("SQLException (Session): " + sqle + "<br/>");
        }
    }
}



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

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

Проверьте на рабочей базе, что будет, если в параметре to_hour придет вот такая строка:

Код: plsql
1.
"23:59:59', 'yyyy-mm-dd hh24:mi:ss'); DROP TABLE TSESSIONS; -- Comment to the end of the line"
...
Рейтинг: 0 / 0
Sql инъекции
    #38744185
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос,

Воистину говнокод, даже если не говорить про уязвимости.
...
Рейтинг: 0 / 0
Sql инъекции
    #38744205
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосivanra,
я не понял о чем вы
SQL Injection на SQL Injection-е сидит и SQL Injection-ом погоняет. Так понятно?
...
Рейтинг: 0 / 0
Sql инъекции
    #38744243
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfAlexey Tomin,

А чем это в принципе может быть быстрее? Это даже не prepared statement, это при каждом вызове ХП компиляцию делать надо... При том, что обычные ХП компилируются в C.

У оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению.
Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю).
...
Рейтинг: 0 / 0
Sql инъекции
    #38744263
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominУ оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению.
Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю).
По-моему там есть некоторые оптимизации, которые умеют выделять параметры запроса, даже если они заинлайнены в SQL. Но, конечно, полагаться на эти фичи, не зная о них и не понимая того как они работают бессмысленно.
...
Рейтинг: 0 / 0
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
46 сообщений из 46, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Sql инъекции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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