Bezpieczny string

dział ogólny

Bezpieczny string

Nowy postprzez mentalmesh » poniedziałek, 30 listopada 2009, 23:05

Witam.
Skladam w aplikacji kod SQL z mniejszych stringow i wykorzystuje go nastepnie w komponencie IBQuery, w zwiazku z czym chciałem zabezpieczyc tekst wprowadzany przez uzytkownika programu np. w polach Edit, przed wprowadzeniem kodu SQL ktory moglby spowodowac uszkodzenie bazy danych.
Prosciej mowiac chodzi o "zablokowanie" znakow specjalnych typu ', \ itd. W PHP służy do tego celu funkcja htmlentities(), czy jest w C++Builder jakas metoda ktora jest odpowiednikiem tej funkcji (i ewentualnie jaka)? Szukalem w helpie i w necie i nie udalo mi sie znalezc takich informacji. Z gory dziekuje za pomoc.
Avatar użytkownika
mentalmesh
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): piątek, 5 czerwca 2009, 04:44
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP3
Windows 7 Prof x64
Kompilator: C++ Builder 2009, InterBase 2009
Gadu Gadu: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez banita » wtorek, 1 grudnia 2009, 00:39

wykorzystaj parametry. w kodzie masz zapytanie np:

SELECT * FROM xyz WHERE x = : PARAM;

i usee podaje to param a ty ten parametr ladujesz do swojego zapytania. wtedy user moze podac dowolna tersc. jesli bedzie zle to zapytanie nie zwroci wyniku ale nic nie moze sie zepsuc.
musisz zerknac jak definiuje sie parametry w uzywanych przez ciebie komponentach, nie wiem czy : PARAM czy jakos ianczej.
Ostatnio edytowano wtorek, 1 grudnia 2009, 01:12 przez banita, łącznie edytowano 2 razy
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez Corvis » wtorek, 1 grudnia 2009, 00:52

Moim zdaniem lepiej zrobić procedury składowane SQL i je tylko wywoływać z odpowiednimy parametrami.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez polymorphism » wtorek, 1 grudnia 2009, 11:31

czy jest w C++Builder jakas metoda ktora jest odpowiednikiem tej funkcji (i ewentualnie jaka)?

A cóż za problem napisać sobie funkcję, która będzie zamieniać znaki na jakieś bezpieczne kody/sekwencje? Może coś w stylu kodowania URL?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez usermaw » sobota, 5 grudnia 2009, 12:20

polymorphism napisał(a):
czy jest w C++Builder jakas metoda ktora jest odpowiednikiem tej funkcji (i ewentualnie jaka)?

A cóż za problem napisać sobie funkcję, która będzie zamieniać znaki na jakieś bezpieczne kody/sekwencje? Może coś w stylu kodowania URL?


Czyli np użyć porady Barona: http://cyfbar.republika.pl/chain.html#chain21 I pozamieniać wartości wzorcowej tablicy.
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
Podziękował : 2
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez polymorphism » sobota, 5 grudnia 2009, 12:59

Nie bardzo. Tamta funkcja usuwa cyfry ze stringa, a mentalmesh chce zamienić pewne znaki na jakąś bezpieczną formę, ale w taki sposób, żeby móc z powrotem odtworzyć stringa w oryginalnej formie - w każdym razie tak to rozumiem. Oczywiście funkcją StringReplace da się wykonać to zadanie, ale można zrobić to optymalniej, zważywszy, że podmieniamy znaki, a nie stringi:
Kod: Zaznacz cały
string& url_like_encode(string &s1)
{
   string s2;
   char tmp[] = "%XX";

   for(string::iterator i = s1.begin(); i != s1.end(); ++i)
   {
      if(strchr("%,`\\ :",*i))
      {
         sprintf(tmp + 1,"%02X",*i);
         s2 += tmp;
      }
      else s2 += *i;
   }

   s1.swap(s2);
   return s1;
}





No i to:
Kod: Zaznacz cały
AnsiString tab[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

Wiem wiem, czepiam się :D
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez usermaw » niedziela, 6 grudnia 2009, 16:14

No czepiasz się niemiłosiernie ;)
Taki problem zamiast cyferek w tablicy wpisać cos innego?
Poza tym moze to byc równie dobrze tablica char, w tym przypadku.

W zdarzeniu onChange Edita zapisywac do jakiegoś stringa, zanim zostanie znak podmieniony.
Po co w takim czyms bawic sie w wydajnośc.?

pozdro 8-)
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
Podziękował : 2
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Bezpieczny string

Nowy postprzez polymorphism » niedziela, 6 grudnia 2009, 18:07

Taki problem zamiast cyferek w tablicy wpisać cos innego?

Żaden problem, tylko zastosowanie tamtej funkcji jest inne, i tyle...

Poza tym moze to byc równie dobrze tablica char, w tym przypadku.

Otóż to ;)

Po co w takim czyms bawic sie w wydajnośc.?

Nie w tym rzecz. Jeśli chcę znaleźć jakąś literę w stringu, wykorzystuje funkcję/algorytm/metodę, która tę literę mi znajdzie. Nie zastosuje funkcji, która w tekście będzie mi wyszukiwać inny tekst. Nie szukam przecież fraz czy wyrazów a konkretne znaki. To nie jest żadne optymalizacyjne hokus pokus, dobieram odpowiednią metodę do konkretnego zadania. A że przy tym samym nakładzie pracy zyskuje na wydajności... to chyba dobrze, nie?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron