защита на пост заявки

vasilev

Registered
здравейте,
имам форма, пример..:

PHP:
<form..>
<input name='phone' type='text' class='required[phone]'>
<select name='otnosno'>
<option value='test1'>test1</option>
<option value='test2'>test2</option>
</select>

тук има s3captcha.

</form>


няколко пъти са ми изпращали на мястото на phone стринг от вида "akljsdfhaksj hdasd80a0s" при положение че се използва jquery validation engine и на мястото на select name тоест относно - 121, 1290819021 ..
тоест неща които ги няма в селекта.

Очевидно някой си играе но аз как може да го оправя това нещо.
за phone ще сложа някаква проверка при постване с php функция но за select name ..

не говоря за защита като htmlspecialchars .. а за самата форма
 
За phone number точно , му сложи една проверка
Код:
if(ctype_digit($_POST['number'])){ //we are good }
а селекта,може всекида си играе директно чрез браузъра тъй,че не виждам как.Според мен важнотое да го провериш преди да се запише в дб-то,защото нормалните хора няма да си "играят" и да кажат,че не работи сайта.
 
за телефон от вида +35990283902832 или нещо с + не трябва лид а е нещо от сорта :


PHP:
function ctype_int($text)
{
    return preg_match('/^-?[0-9]+$/', (string)$text) ? true : false;
}
 
Това ctype ви е станало навик май навсякъде да го ползвате. Такива неща, като адреси, телефонни номера, email адреси, общо взето всякаква лична информация е хубаво да се минава през по-сериозни шаблонни инструкции.
Не може някакъв си номер просто да го провериш дали е числа, важното е да е валиден.
Все пак, едва ли е сложено просто така полето. Щом е сложено, би трябвало да има смисъл от него, а щом ще има смисъл от него е важно да се пусне валиден номер. Естествено валиден в рамките на истината, а не лъжата(т.е. аз мога да пусна за шаблона валиден телефон, но да не е моя).

И не се подлъгвайте с валидация само на клиентската страна, щом нещата ще минават през сървър е задължително и там да се прави проверка, защото има най-различни начини да се предават POST заявки встрани от формата.

То, ако ще е само на клиентска страна, html5 вече предлага най-различни полета, които сами по себе си валидират, плюс това и имат атрибут pattern, който позволява да се вписват шаблони. Но, както казах, не се залъгвайте, че като валидирате client-side сте валидирали и за server-side, сървъра може да се манипулира също.
 
ctype_digit го ползвам аз лично навсякъде където очаквам само номера, и няма как тази шаблонна проверка да се "пробие" като му ограничава на потенциалния нежелател използването на 0-9 с които нищо не може да направи освен да уцели някой реален запис и да го види news.php?id=1
:lol:
:)
 
Hous каза:
ctype_digit го ползвам аз лично навсякъде където очаквам само номера, и няма как тази шаблонна проверка да се "пробие" като му ограничава на потенциалния нежелател използването на 0-9 с които нищо не може да направи освен да уцели някой реален запис и да го види news.php?id=1
:lol:
:)

Друго исках да кажа, но няма значение вече.
 

Back
Горе