Безопасно ли е следното нещо

mitko666

Registered
Здравейте искам да попитам безопасно ли е да позволим на потребителите на сайта да си вмъкват полета в таблицата с база данни.В смисъл аз ще им позволя да си пишат само името на полето.

Код:
$sql = 'ALTER TABLE `users` ADD `$name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;';

Предполагам че така ще ми изглежда заявката като сложим и един регулярен израз за проверка дали променлива $name е само букви и числа и предплагам че няма да имам проблеми но все пак вие кажете.
 
Безопасно е! Стига да знаеш как да си го обезопасиш :)

Примерно на input поленцето сложи ограничение 20 символа, след това като взимаш стойноста на полето (в случая променливата $name) я мини през mb_substr и пак я резни до 20-тия символ, защото инпут-а може да се манипулира :) А също така го мини през addslashes + htmlspecialchars и накрая направи така, че стойноста на $name да не може да бъде на кирилица, а само на латиница :) Това става като си направиш 2 масива и после използваш str_replace() (единият масив ще е на кирилица, а другия латиница и латинския ще измества кирилският)
 
t0m3kk каза:
Безопасно е! Стига да знаеш как да си го обезопасиш :)

Примерно на input поленцето сложи ограничение 20 символа, след това като взимаш стойноста на полето (в случая променливата $name) я мини през mb_substr и пак я резни до 20-тия символ, защото инпут-а може да се манипулира :) А също така го мини през addslashes + htmlspecialchars и накрая направи така, че стойноста на $name да не може да бъде на кирилица, а само на латиница :) Това става като си направиш 2 масива и после използваш str_replace() (единият масив ще е на кирилица, а другия латиница и латинския ще измества кирилският)

Лол... толко прошерки за нещо което се прави с 1 ред код

if(!preg_match('/^[0-9a-z]$/i',$name)) {
//error
}
 
jooorooo каза:
t0m3kk каза:
Безопасно е! Стига да знаеш как да си го обезопасиш :)

Примерно на input поленцето сложи ограничение 20 символа, след това като взимаш стойноста на полето (в случая променливата $name) я мини през mb_substr и пак я резни до 20-тия символ, защото инпут-а може да се манипулира :) А също така го мини през addslashes + htmlspecialchars и накрая направи така, че стойноста на $name да не може да бъде на кирилица, а само на латиница :) Това става като си направиш 2 масива и после използваш str_replace() (единият масив ще е на кирилица, а другия латиница и латинския ще измества кирилският)

Лол... толко прошерки за нещо което се прави с 1 ред код

if(!preg_match('/^[0-9a-z]$/i',$name)) {
//error
}

Само дето трябва да сложи едно ограничение на дължината на стринга, тоест {2, 20} да речем, или дори по-кратко :)
 
t0m3kk каза:
Безопасно е! Стига да знаеш как да си го обезопасиш :)

Примерно на input поленцето сложи ограничение 20 символа...

че аз имам Firebug, може да си променя maxlength.
 
За какъв чеп пък, потребителите ще добавят полета в базата данни?
Мен изобщо не ми се вижда сигурна работата, но все пак избора си е твой :idea:
 
jooorooo каза:
Лол... толко прошерки за нещо което се прави с 1 ред код

if(!preg_match('/^[0-9a-z]$/i',$name)) {
//error
}

Jooorooo, знам, че работата става и с preg_match, но тъй като не съм чел за тази функция, защото никога не ми е трябвала - за това не дадох вариянт, като твоя...

bancov96 каза:
t0m3kk каза:
Безопасно е! Стига да знаеш как да си го обезопасиш :)

Примерно на input поленцето сложи ограничение 20 символа...

че аз имам Firebug, може да си променя maxlength.

Точно за това казах по-долу да се ползва и substr, за да няма такива, които си играят с FireBug :)

Но все пак аз поддържам мнението на Replace
Replace каза:
За какъв чеп пък, потребителите ще добавят полета в базата данни?
Мен изобщо не ми се вижда сигурна работата, но все пак избора си е твой :idea:
 
Според мен това е адски излишно и не виждам защо трябва потребител да има доспът до нещо подобно. Измисли го по друг начин.
 

Back
Горе