Jump to content
php.lv forumi

Recommended Posts

Posted

Nekad man tas nav paticis un ir radījis problēmas tas, ka ja ir, piemēram, input lauks, kurā es savadu datus spiežu pogu un ilzec kāds errors ka kaut kas nav kā vajadzetu būt, nu neko, nākas spiest atpakaļ (back pogu) un ko es tur ieraugu? - tukši visi mani input lauki kurus biju sarakstījis un tagad man to nākas darīt vēlreiz. Kā lai to labo, lai būtu dati palikuši? Tā tas vienmēr ir bijis tikai ar tām lapām kuras es taisu, ieejot jebkurā citā lapā un izmēginot izmest erroru un spiežot back, viss ir savās vietās.

Posted (edited)
<input type="text" name="username" value="<?=$_POST['username']?>"/>

Hehe, atkal ne līdz galam. Tā tie saiti ar XSS rodas.

 

Hint: kas notiks, ja input laukā ievadīs pēdiņas, "<" vai ">"?

Edited by endrju
Posted

hmm, kādā veidā, nospiežot browsera back, tiek ielikti inputā POST dati? To var darīt bez back spiešanas, ja errori rādās tajā pašā lapā, uz kuru notika posts, un kurā atrodas forma, bet bez redirekta.

 

Par to, ja nospiež back pēc posta un visi lauki saglabājas, man liekas, ir atkarīgs no browsera paša. Cik esmu ievērojis, tad vismaz Firefox3 saglabā formas datus, izmantojot browsera back, kā arī uz soft refresh, bet arī ne vienmēr.

Normāli uz back, ja vien neizmantos kādus kūkijus, kas uz submitu saglabā datus, dati nebūs saglabājušies.

 

Cita lieta, ja back ir taisīts kā poga, kas submito datus atpakaļ uz formas lapu.

Posted (edited)

Jā, protams, tas bija attiecināms uz gadījumu, kad lietotājs netiek nekur sūtīts tālāk.

Lai saglabātu datus pēc history.back() izpildes, datus jāsaglabā, piemēram, sesijā.

Edited by phpjanis
Posted
Hint: kas notiks, ja input laukā ievadīs pēdiņas, "<" vai ">"?

Kas tad notiek, nekas nenotiek, es izmēģināju. :D

 

Tad tā nedrīkst rakstīt, vai man nāksies visu sesijā saglabāt?

Posted

Vai šādi ar vienu funkciju pietiks?

 

function quote_smart($value)
{
if (get_magic_quotes_gpc())
{
	$value = stripslashes($value);
}

if (!is_numeric($value))
{
	$value = "'" . mysql_real_escape_string($value) . "'";
}
return htmlspecialchars($value);
}

Posted (edited)

Nu tad es nesaprotu kā man rīkoties. Man pašlaik viss izskatās šādi:

 

<input type="text" name="name" value="<?php echo $_POST['name']; ?>" />

pēc tam uz

$name = quote_smart($_POST['name']);
mysql_query("INSERT INTO table (name) VALUES ($name)");

 

un tam quote_smart() esmu noņēmis htmlspecialchars(). Tātad vēl man kaut kas šeit ir jāizdara?

 

PS strādāt jau viss strādā lieliski, bet es domāju par drošību šeit.

Edited by yeahz
Posted

SQL pieprasījumu drošība jau ir cita tēma, te mēs runājām par XSS :)

 

P.S.

<input type="text" name="name" value="<?php echo htmlspecialchars($_POST['name']); ?>" />

Posted (edited)

Veids labāks kā datus saglabāt DB nav labāk ar Formu + $_POST?

Teiksim:

 

[qoute]

<?php

 

if(isset($_POST['add']))

{

vaidzīgais kverijs!

}

echo'FORMA';

?>

[/qoute]

Edited by Kemito

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...