Jak wyszukac string zawierajacy cudzyslow.

0

Witam!

Mam tabele z nazwami wydarze. Na frontedzie user moze wyszukac wydarzenie np po nazwie. Problem mam taki, ze coraz wiecej userow wpisuje podwojny cudzyslow w nazwie wydarzenia. Welcome SLQ Injectino :) Oczywiscie na backend usuwa te cudzyslowy. Czy jest jakas mozliwosc jednak przeszukac po cudzyslowie? Myslalem, juz zeby uzyc jakiegos znaczka i zmieniac do na poziomie zapytania.

Przyklad

SELECT * 
FROM wydarzenie
WHERE title LIKE '%My name is "poniato". Ble Ble%'

W sumie to moge usunac cydzyslow z title. REGEXP_REPLACE(title, '"', '\"', 'g') ILIKE %search "bleble"%

1

Ale z czym masz problem?

with x(col1) as (select unnest(array['ala''ma kota', 'ala "ma" kota', 'a tu "nic"']))
select * from x where col1 ilike '%"ma"%'

A do takich zadań nie używaj RE, zwykłe TRANSLATE wystarczy

0

Tzn troche nie chce uzywac "", bo moze sie to zle skonczyc. Szukany tytul podaj user przez formularz. A skad mam miec pewnosc, ze mi calej bazy nie usunie przy pomocy cudzyslowa.

1

Takie rzeczy jak usunięcie bazy reguluje się poprzez operatora aplikacyjnego z ograniczonymi uprawnieniami np tylko do select na danej tabeli (ale to tak na marginesie) natomiast co do sqlinjection to możesz spróbować użyć parametrów po stronie GUI.
https://stackoverflow.com/questions/7389416/postgresql-how-to-pass-parameters-from-command-line
ewentualnie zrobić funkcję z parametrami wejściowymi :)

2

jak się skleja zapytania zamiast używać parametrów to tak może być

1

Jak boisz się jako programista wpisywać rzeczy na froncie bo ci usunie bazę, to możesz pozdrowić projektanta.

Po pierwsze pokazałeś, małym szczegółem nieudolność kilku komponentów w systemie.

  1. Nie może być takiej opcji, by istniał tak prymitywny mechanizm. Czego używacie na backendzie?
  2. User wprowadza dane, które są zmienione. Innymi słowy aplikacja zmienia za niego dane. To blad.
  3. Powinno z tego tytułu istnieć zabezpieczenie które sparsuje bezpiecznie dane do sql w oryginalnej postaci. Jak macie Jave to ogarniaj Pripery stejtment.
  4. Możesz zabezpieczać bazę oddzielnie od ataków sql Inject, ale w tym przypadku to workaround.

1 użytkowników online, w tym zalogowanych: 0, gości: 1