Преминаване от GET на POST?

streleca_stz

Registered
Здравейте!
Преди време открих "Система за гласуване като на Vbox7" и не е лоша, но има един проблем и той е, че изпраща параметрите с GET, а те могат да бъдат манипулирани...
За това искам да ви попитам дали е възможно на тази система да се промени начина на изпращане на данните? Аз се пробвах, но ме няма особено с jQuery/AJAX, а ако като съм сложил проверките и не са изпълнени (но все пак заредя линка ми дава да изтегля страница, което е много странно... Не че мога да видя кода (освен частта в която има HTML и mySQL грешките о.о))
 
Искаш да кажеш дупка в кода, ако е това.

vote.php
$id = $_GET['id'];
$q = $_GET['q'];

vote.js

Виж там е проблема :)
 
phpbot каза:
Искаш да кажеш дупка в кода, ако е това.

vote.php
$id = $_GET['id'];
$q = $_GET['q'];

vote.js

Виж там е проблема :)
Ммм всъщност не е от там.. ти пък... да няма да си оставя данните не филтрирани! :) Говоря, че ако напиша да речем vote.php?q=+1&id=100 и мога така да гласувам например.. Както и факта, че в моя случай хем гласувам, хем и ми изкача прозорец за запис на страницата :shock:
 
Няма проблем да си ползваш $_GET, просто си каствай " (int)$_GET['id'] ", по същия начин и другите $_GET променливи, ако разбира се очакваш да са числа.

До колкото до това, че през $_POST си по защитен, не е вярно. : )) Той се манипулира също, единствено че е малко по - трудно, но не е проблем, разбира се ако е без всякакви валидации, csrf защити и др. подобни.

И $_GET и $_POST, да ползваш трябва да валидираш входната информацията, така както очакваш да е.

$_GET в дадени ситуации има повече плюсове от $_POST, също така $_POST има повече плюсове от $_GET във други ситуации.

Ако очакваш число, задаваш му (int). Ако очакваш да е някакъв стринг от букви, цифри и долна черта, задаваш му [a-zA-Z0-9_]. Ако очакваш да е някакъв текст, който може да съдържа различни символи от букви, цифри и от горния пример долна черта, тогава може да ползваш различни комбинации за да изчистиш текста максимално или пък htmlspecialchars или там сродните му.

До това как да пращаш информация към базата данни, ще ти кажа да ползваш prepare statements и не само аз ще ти го кажа, а и други потребители. Прочети какво е PDO и как се използва. Аз дори мисля, че съм дал един пример във темите за защита или OOP (една от двете теме беше, тук във раздел PHP).
 

Back
Горе