Форум ›PHP
Приложение за калории
професорът ми каза, че работата ми не е добра поради факта, че има SQL инжекция,
но имам данни, третирани във всяка функция, използвайки htmlspecialchar, но той изисква да ги напиша чрез bindValue.
Можете ли да ми обясните разликата?
# 1 Студент
Функцията htmlspecialchars () не решава проблема, а просто причинява символите в базата данни, които не принадлежат към нея.
Не използвам метода bindValue (), всичко, от което се нуждая, е методът execute (), който е IMHO по-ясен и работи по-добре с него.
Бих предал условието отделно, вашият пример лесно ще изтрие неволно цялата таблица. По-скоро го използвайте
Какво търси там грозно "глобално"?
htmlspecialchars - избягва стойност за html
bindValue - избягва стойността за pdo (и най-вероятно го прави и изпълнява, аз го правя малко по-различно); не е нужно да използвате bindvalue, ако го избягате по друг начин, което не се прави много в училище, но
urlencode - избягва стойност за url (други функции)
Но понякога е така, че искате да имате sql заявката там. Не трябва да се въвежда от потребителя. Или трябва да го направи поне чрез парола.
Тези хакове могат да бъдат умишлени или погрешни. Когато излезете, можете да въведете файла там по погрешка, но бих искал да поставя друг код там, имам нужда от код за съхраняване на данните за вход
- запис на натискане на клавиш
- изпращайте на всеки 5 секунди до url
# 5 Питър
Удивително е като да смесите SQL и HTML в една купчина като тази. Страхотен източник на проблеми.
# 7 Комплект
Не разбирам. Какво коментирате конкретно?
Току-що се опитах да покажа как да го използвам и от него трябва да стане по-ясно защо оригиналният му код е грешен и че функцията се използва за нещо съвсем различно. Лично аз имам избягащи функции, наречени escape. Може би ще го заобиколя с клас. Наистина не обичам php, когато искам да избягам нещо, потърсете това, което авторите са нарекли функцията:) И в 90% от случаите не мога да съставя заявка чрез bind или изпълнение. За съжаление, клиентът може да излезе с такива условия, че трябва да съставя заявката като низ. Тогава използвам escapeSqlKey, escapeSqlValue, който преименувах. По същия начин имам escapeUrlValue, escapeHtmlValue, escapeJsValue, escapeRegExpValue. (възможно без стойност, pac в допълнение към sql винаги е стойност:))