Автор Тема: Грешка при използване на символа '  (Прочетена 1435 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Здравейте. когато използвам в името на артикул символа ' получавам грешка в SQL заявките след това или това малкото ми пре*б*ва SQL-a след въвеждането му в името на артикула. Сега аз сам го премахнал от името този символ като го замених с символа "  и всичко си е ОК за сега.
Въпроса ми е някой знае ли за още такива символи дето могат да ви прецакат по някъкъв начин кода за да ги презапиша с други символи и да не се получават вече такива малки бъгчета.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Грешка при използване на символа '
« Отговор #1 -: 13 Април 2015, 18:27:19 »
Натъкнал си се на SQL Injection :)
Гледам че в Java има Prepared Statements, които могат да свършат черната работа за теб - хвърли им едно око.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Грешка при използване на символа '
« Отговор #2 -: 13 Април 2015, 18:36:01 »
Проблема ми е че тези символи трябва да са там ( или поне тъкъв беше замисъла ) и за това не съм ги ескейпвал ама след като ми чупят SQL - а  шъ мъ извиняват ама под ножа. А и къв е бил тоя моя замисъл след като знам че това ' чупи кода остава мистерия.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 123
  • -Получени: 73
  • Публикации: 1002
  • Кибик
Re: Грешка при използване на символа '
« Отговор #3 -: 13 Април 2015, 20:35:03 »
В първите версии на моята складова програма, и аз имах проблеми с това, защото ползвах mysql. Забраних във формите всичко що е кавички и реших проблема на първо време, сега ползвам PDO и нямам проблеми ;) .
Но за да работят по добре търсачките съм оставил ограничението за кавички заради хора, които пишат например ул. "Македония" №31, а не ул. Македония 31 :)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 411
Re: Грешка при използване на символа '
« Отговор #4 -: 13 Април 2015, 22:10:58 »
Никой не е казал че ще се махнат символите, просто трябва да ползваш както казаха колегите PreparedStatement, а ако става въпрос номера би станал (зависи каква база полваш) два пъти да ползваш кавички '' и се инсъртва като една, или с \ или още сумати и неща които пак биха ти свършили работа, но да най-лесното ще е просто PreparedStatement, което ще ти се погрижи да влезнат в базата както трябва.

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Грешка при използване на символа '
« Отговор #5 -: 13 Април 2015, 23:00:52 »
На практика това си е SQL Injection но винаги съм гледал на това като начин с който ще ти откраднат информацията и понеже в случея няма какво да ми кръдът защото всичко е на яве реших че не е нужно да ползвам PreparedStatement но забравих че това може и да ти потроши кода.  Е сега ще си bind - на променливити и мисля че няма да има проблем.

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Грешка при използване на символа '
« Отговор #6 -: 14 Април 2015, 14:48:42 »
Така понеже не можах да се справя с тези специали знаци или поне не стана това което искам, реших всичко да минава под ножа за да не изкочи пак някаква такава грешчица. И да покажа какво съм направил.  Всеки символ поставен в String specialChars бива заличен.

Код: Java
  1. public class App {
  2.  
  3.     public static void main(String args[]) {
  4.         System.out.println(removeChar("I$ c&an. d<>o, #t?h'at;"));
  5.     }
  6.  
  7.     public static String removeChar(String str) {
  8.         String specialChars = ",.';<>?&$#";
  9.         char[] ca = specialChars.toCharArray();
  10.         for (char c : ca) {
  11.             str = str.replace("" + c, "");
  12.         }
  13.         return str;
  14.     }
  15. }
  16.  
« Последна редакция: 14 Април 2015, 20:11:16 от Avalanche »

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Грешка при използване на символа '
« Отговор #7 -: 14 Април 2015, 16:54:33 »
Код: Java
  1. /*  removeChar би било, ако примерно подаваш като втори аргумент символа, който да се маха */
  2. public static String removeInvalidChars(String str) {
  3.      String specialChars = "[,.';<>?&$#]";
  4.      return str.replaceAll(specialChars, "");
  5. }