yeahz Posted June 15, 2009 Report Share Posted June 15, 2009 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. Quote Link to comment Share on other sites More sharing options...
werd Posted June 15, 2009 Report Share Posted June 15, 2009 <input type="text" name="username" value="<?=$_POST['username']?>"/> Quote Link to comment Share on other sites More sharing options...
endrju Posted June 15, 2009 Report Share Posted June 15, 2009 (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 June 15, 2009 by endrju Quote Link to comment Share on other sites More sharing options...
werd Posted June 15, 2009 Report Share Posted June 15, 2009 Tāpēc, ka tas ir piemērs, kā to izdarīt! Tas, kā padot konkrētos datus, ir katra paša ziņā. Quote Link to comment Share on other sites More sharing options...
indoom Posted June 16, 2009 Report Share Posted June 16, 2009 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. Quote Link to comment Share on other sites More sharing options...
werd Posted June 16, 2009 Report Share Posted June 16, 2009 (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 June 16, 2009 by phpjanis Quote Link to comment Share on other sites More sharing options...
yeahz Posted June 17, 2009 Author Report Share Posted June 17, 2009 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? Quote Link to comment Share on other sites More sharing options...
marcis Posted June 17, 2009 Report Share Posted June 17, 2009 Darīt tā drīkst, tikai pirms tam mainīgais jāapstrādā ar htmlspecialchars(). P.S. "<" vai ">" viens pats neko neizdarīs, bet savienojumā ar " vai ' gan šo to var panākt. Quote Link to comment Share on other sites More sharing options...
yeahz Posted June 17, 2009 Author Report Share Posted June 17, 2009 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); } Quote Link to comment Share on other sites More sharing options...
bubu Posted June 17, 2009 Report Share Posted June 17, 2009 htmlspecialchars vajag pielietot izvadot informāciju (t.i. pēc datu izvilkšanas no DB). Quote Link to comment Share on other sites More sharing options...
yeahz Posted June 17, 2009 Author Report Share Posted June 17, 2009 (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 June 17, 2009 by yeahz Quote Link to comment Share on other sites More sharing options...
marcis Posted June 18, 2009 Report Share Posted June 18, 2009 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']); ?>" /> Quote Link to comment Share on other sites More sharing options...
Kemito Posted June 18, 2009 Report Share Posted June 18, 2009 (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 June 18, 2009 by Kemito Quote Link to comment Share on other sites More sharing options...
marcis Posted June 18, 2009 Report Share Posted June 18, 2009 Kemito, seko līdzi tematam. Te nav nekāda sakara ar to, ko tu pateici, bet ideja koda struktūrai ir pareiza. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.