Jump to content
php.lv forumi

filter-input()


daGrevis

Recommended Posts

http://lv.php.net/manual/en/function.filter-input.php

 

BrīC,

Kā man būtu jāizmanto šī funkcija, lai nebūtu jābaidās no $_POST[] hakošanas mēģinājumiem. Tas ir - kāds filtrs? Vispār Jūšu domas par šo "zvēru"... :P

Link to comment
Share on other sites

Kas par hakošanas mēģinājumiem? :))

 

XSS - htmlspecialchars

sql injekcija - mysql_real_escape_strings...

..tas arī praktiski viss, par ko būtu jāsatraucas... (vēl protams CSRF, bet tas nedaudz sarežģītāk)

 

Uzmetot aci filter_input, īsti nesaskatu jēgu :(

 

Nez ar ko atšķiras šitie:

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);

$search_html = htmlspecialchars($_GET['search']);

Link to comment
Share on other sites

Neprasi man, tikai pats mācos. :D Tātad precizēšu skaidrībai, labo, ja kļūdos! :)

 

$_POST[] un $_GET[], pret XSS.

$data1 = htmlspecialchars($_POST['data1']);
$data2 = htmlspecialchars($_GET['data2']);

 

MySQL injekcijām... pirms pieprasījuma veikšanas.

$data = mysql_real_escape_string($data);

 

Un amatieriem viss? :D

Link to comment
Share on other sites

Tieši tā - viss atkarīgs no tā kur kurus datus izmanto...

 

Principā vajadzētu būt tā, ka datubāzē tiek glabāti orģinālie dati, un pie izvades tiek izmantots htmlspecialchars...

 

ja tas ir vesels skaitlis, tad $id = (int)$_GET['id']; (ja GET id būs ne-skaitlis, tad atgriezts tiek "0")

 

real_esc_string izmanto kā pēdējo pirms liek tos datus kvērijā...

Link to comment
Share on other sites

Es šo vēl iesaku papildināt ar @, lai, ja $_GET['id'] nav definēts, nav jāraksta isset vai neizmet kļūdu.

$id=(int)@$_GET['id'];

 

@ ir ļaunuma sakne! :D

 

$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

Edited by briedis
Link to comment
Share on other sites

Nez - man, personīgi, nepatīk, ka neredz kļūdas, ja tur tās ir. Jā - notice, ja naff nekas traks, bet šā vai tā. Pieļauju, ka savu laiku aizņem arī kļūdas konstatēšana un attiecīgā teksta ģenerēšana (nezinu cik daudz no tā noņem tas @. Pieļauju, ka teksts tiek uzģenerēts, bet tik izvadīts netiek). Protams, isset, arī kaut ko aizņem, tā kā varētu būt, ka es runāju baigās muļķības.

 

Vēl cilvēkam var iestāties baigā mānija lietojot @ kur vajag un kur nevajag, tādā veidā saražojot kodu, kurā ir sarežģīti samanīt kļūdas.

 

 

Lai vai kā - man tas tiešām vairāk ir reliģijas jautājums - patīk, ka viss ir bez E_* (arī surpesotiem) :P

 

Bet nu daudz kas jau ir atkarīgs arī no projekta...

 

Lai vai kā - es par @ neizmantošanu!!! ^_^

Edited by rATRIJS
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...