Jump to content

boco_bc

Members
  • Posts

    8
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

boco_bc's Achievements

Newbie

Newbie (1/14)

10

Reputation

  1. boco_bc

    Caut carte

    Eu am cumparat din "Diverta" cartea asta -> PHP si MySQL pentru site-uri dinamice ( trebuie sa o cauti,stiu ca am gasit-o odata PDF ) Introducerea este explicata ca la gradinita, adica este imposibil sa nu intelegi (parerea mea ). Sau/si www.oriceon.com/tutorial_v2.1.rar Personal recomand cartea.
  2. Faci cu phpmyadmin database-ul "site" si table este "comenturi" si la comenturi id auto, nume, numar, text <?php $sql=mysql_connect('localhost','user','parola'); $db=mysql_select_db('site',$sql); ?> <?php $afisezCOMENTURI=mysql_query("SELECT * from comenturi"); while($showCOMENTURI=mysql_fetch_array($afisezCOMENTURI)) { echo $showCOMENTURI['nume'].'<br>'; echo $showCOMENTURI['numar'].'<br>'; echo $showCOMENTURI['text'].'<br>'; } ?> <form action="" method="post"> <input type="text" name="nume"><br> <input type="text" name="numar"><br> <input type="text" name="text"><br> <input type="submit" name=""adaug"> </form> <?php if(isset($_POST['adaug'])) { $nume=$_POST['nume']; $numar=$_POST['numar']; $text=$_POST['text']; $bagDATE="INSERT INTO comenturi (id,nume,numar,text)VALUES(0,'$nume','$numar','$text')"; if(mysql_query($bagDATE)){echo 'Succes';}else{echo 'Error';} } ?>
  3. cel mai tare desen EVER mor de ras ))))))))
  4. Vreau sa fac un vote up la posturile mele dar se pare ca nu reusesc sa fac cum vreau eu plus ca nu stiu javascript,ajax,etc, doar "descifrez" ce poate scrie in codul acela. O sa incerc sa scriu cat mai putin "carnat code". Am asa in table "post"-> id,title,vote,user (le-am sters pe celelalte care nu ne intereseaza) Si in table "post_vote_security" memoram cine a postat -> post_uniq_id,post_id,post_user Vreau sa dau click pe "VOTE UP" si fara sa incarce pagina sa se adauge votul,asta cred ca am rezolvat! dar nu stiu cum sa se contorizeze votul cu +1 fara sa dau refresh la pagina si sa scrie in loc de "VOTE UP"-> "VOTED" ca text(neclickabil(ce ciudat suna))! iar dupa ce se da refresh la pagina , postul care s-a votat sa arate "VOTED" tot asa, ca text. Exista live update din sql cu jquery? sa pot schimba numarul voturile in felul asta?sau cum se face? La partea cand vreau sa scrie VOTED dupa refresh postului respectiv am incercat sa intru in amandoua tabele deodata (SELECT * from post LEFT JOIN post_vote_security on post.id=post_vote_security.post_id order by vote DESC) si credeam ca am rezolvat( verificam daca sesiunea coincide cu userul care a votat si in functie daca coincidea numele sau nu, aparea mesajul VOTED sau VOTE UP).....DAR daca POSTUL "VACA" il vota X si y......aparea de 2 ori acel post.....si m-a dat peste cap Cum sa procedez sa imi arate VOTED sau VOTE UP la post? <html> <head> <script src="jquery.js" type="text/javascript"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(".vote").click(function() { var id = $(this).attr("id"); var name = $(this).attr("name"); var dataString = 'id='+ id ; var parent = $(this); if (name=='up') { $(this).fadeIn(200).html('<img src="dot.gif" />'); $.ajax({ type: "POST", url: "vote.php", data: dataString, cache: false, success: function(html) { parent.html(html); } }); } return false; }); }); </script> </head> <body> <?php include('/configs/db.php'); /* INCEPE SESIUNEA*/ session_start(); $_SESSION['user']='Crancanel'; $user=$_SESSION['user']; /* SELECTEZ POSTURILE*/ $sql=mysql_query("SELECT * from post order by vote DESC"); while($show=mysql_fetch_array($sql)) {$title=$show['title']; $vote=$show['vote']; $id=$show['id']; echo 'Voturi: <a href="" id="'.$id.'" class="vote" name="up" >vote up</a>'.$vote.' -- '.$title.'<br><hr> '; } ?> </body> </html> <?php if(isset($_POST['id'])) { /*INCEPE SESIUNEA*/ session_start(); $user=$_SESSION['user']; include('/configs/db.php'); $id=$_POST['id']; /*VERIFIC DACA USERUL DIN SESIUNEA A MAI VOTAT LA POSTUL SELECTAT*/ $check=mysql_query("SELECT * from post_vote_security where post_id='$id'"); while($verifica=mysql_fetch_array($check)){$vuser=$verifica['post_user'];} if($vuser==$user){echo 'Deja ai votat';}else{ /*SELECTEAZA VOTURILE DIN POSTUL SELECTAT */ $sel=mysql_query("select vote from post where id='$id'"); if($rand=mysql_fetch_array($sel)) {$vote=$rand['vote'];} $vote=$vote+1; /*ADAUGA +1 LA VOTURI*/ $insert="update post SET vote='$vote' where id='$id'"; if(mysql_query($insert)){echo 'Voted';} /*ADAUGA USERUL CARE A VOTAT LA POSTUL SELECTAT*/ $insertsecure=mysql_query("INSERT into post_vote_security(post_uniq_id,post_id,post_user)VALUES(0,'$id','$user')"); } }else{echo 'esec';} ?>
  5. Tie iti zice ""Warning: include(php/header.php ): failed to open stream: No such file or directory in "", scrie clar ca nu nu gaseste fisierul pe care vrei sa-l incluzi , ai grija la locatia fisierului si trebuie sa-ti mearga <?php require_once("FISIER.php");?> sau <?php include 'FISIER.php'?>
  6. Ok, eu vad lucrurile in felul urmator. Pentru a te proteja de sql inject trebuie sa filtrezi ORICE valoare care ajunge la mysql_query , fie insert,select,delete sau update. Trebuie sa stergi toate caracterele periculoase( ', ; , -,etc). Dupa o gramada de balarii citite despre securitate cred ca abea acuma mi se formeaza o idee in cap despre "cum sa te previi sql inject" (sau nu?we'll see ) . Referitor la base64, sincer e prima data cand aud de base64 , m-am documentat si am ajuns la concluzia urmatoare: ca atunci cand bagi in baza de date criptat cu base64, sunt toate bune si frumoase, intra sub forma criptata,nicio problema pana aici, DAR cand "scoti" (select) din baza de date si decriptezi( sa presupunem ca asta e un cod de te "bubuie" ) <script>window.alert('BOOM')</script> ajungi sa fi bubuit la output . Asa ca..... as filtra output-ul cu "htmlentities" sa-mi apara codul motamo(CRED: ca aici am blocat xss-ul) si pentru input as bloca sau sterge tot ce contine < si > pentru a nu putea baga nimic dubios .
  7. Speram sa intre mai multi scriptul e pur informativ,nu il folosesc la ceva anume , poate fi folositor si celor care sunt la inceput de drum . Eu as face ceva de genul asta! Criticile sunt binevenite ! <?php $conn=mysql_connect("localhost","root",""); $db=mysql_select_db("ex2",$conn); if(isset($_POST['submit'])) { $user=mysql_real_escape_string($_POST['user']); $password=mysql_real_escape_string($_POST['password']); $problema=FALSE; $mesaj_eroare=array(); if(preg_match('/[\'\"!@#$><%^&*)(;:-]/',$user) || preg_match('/[\'\"!@#$><%^&*)(;:-]/',$password)){$problema=TRUE; $mesaj_eroare[]="Caractere neacceptate";} if(strpos($user,' ')>0 ||strpos($password,' ')>0){$problema=TRUE; $mesaj_eroare[]="Spatiu gol la user si password";} if(empty($user) || empty($password)) {$problema=TRUE;$mesaj_eroare[]="User sau password nu este completat";} $password=md5($password); if(empty($problema)) { $sql="INSERT INTO unu(id,user,pass)VALUES(0,'$user','$password')"; if(mysql_query($sql)){echo "Datele s-au adaugat cu succes!";}else{ echo "tEroare";} } foreach($mesaj_eroare AS $me) {echo '<b>'.$me.'</b><br>';} } ?> <form action="1.php" method="post"> <span>USER</span><input type="text" name="user"><br> <span>PASSWORD</span><input type="password" name="password"><br> <input type="submit" name="submit" value="go"><br> </form> <?php $users_number=mysql_query("SELECT id from unu"); $users_number=mysql_num_rows($users_number); $per_page=3; $get_page=(isset($_GET['page']))?$_GET['page']:1; $chars=array("!","@","#","$","%","^","&","*",")","(","_","-","'","\"","]","[",":",";",".",",",">","<"); foreach($chars as $ch): $get_page=str_replace($ch,"",$get_page); endforeach; $page=($get_page-1)*$per_page; $page=intval($page); $pages=$users_number/$per_page; $pages=ceil($pages); if($get_page==0){die();} if($get_page>$pages){die();} if($get_page==NULL){die();} $sel=mysql_query("SELECT * from unu LIMIT $page,$per_page"); while($rand=mysql_fetch_array($sel)){echo $rand['user'],'<br>';} for($x=1;$x<=$pages;$x++) {echo '<a href="1.php?page='.$x.'"> '.$x.' </a>';} ?>
  8. Salut, sunt un junior(ma rog....tind sa cred asta ) php/mysql si din dorinta a asimila mai multe cunostinte referitor la securitatea unui web am facut acest post. Am vazut ca sunt multe challenge-uri cu SQL inject si presupun ca daca cineva stie cum sa faca un inject , stie si cum sa previna,nu? deci puteti sa luati postul acesta si ca un challange sql protect Acest script adauga in table "unu" , userul si passwordul prin metoda POST iar mai jos se face selectare de useri in functie de pagina. Pe pagina apar cate 3 useri, pagina fiind selectata prin metoda GET. Tema ar fi: tu cum te protejezi de sql inject? tu cum opresti ca scriptul sa iti ia comanda ?page=1' order by x-- ? ce sa folosesti pe langa mysql_real_escape_string ? tu ce ai face scriptului de mai jos sa fie nu fie "hack-uit" ? Avem: id,user,pass si codul: <?php $conn=mysql_connect("localhost","root",""); $db=mysql_select_db("ex2",$conn); if(isset($_POST['submit'])) { $user=$_POST['user']; $password=$_POST['password']; $sql="INSERT INTO unu(id,user,pass)VALUES(0,'$user','$password')"; if(mysql_query($sql)){echo "Datele s-au adaugat cu succes!";}else{ echo "tEroare";} } ?> <form action="1.php" method="post"> <span>USER</span><input type="text" name="user"><br> <span>PASSWORD</span><input type="password" name="password"><br> <input type="submit" name="submit" value="go"><br> </form> <?php $users_number=mysql_query("SELECT id from unu"); $users_number=mysql_num_rows($users_number); $per_page=3; $get_page=(isset($_GET['page']))?$_GET['page']:1; $pages=$users_number/$per_page; $pages=ceil($pages); $page=($get_page-1)*$per_page; $sel=mysql_query("SELECT * from unu LIMIT $page,$per_page"); while($rand=mysql_fetch_array($sel)){echo $rand['user'],'<br>';} for($x=1;$x<=$pages;$x++) {echo '<a href="1.php?page='.$x.'"> '.$x.' </a>';} ?>
×
×
  • Create New...