Autorius Tema: Mysql ir masyvo pasalinimas  (Skaityta 438 kartus)

Neprisijungęs xkendzu

  • Naujokas
  • *
  • Įrašai: 19
  • Karma: +0/-0
    • Žiūrėti profilį
Mysql ir masyvo pasalinimas
« Įrašytas: 2014-05-02 20:35:27 pm »
Sveiki gyvi. Kaip sekasi? Ilgokai nesilankiau cia :) Taciau prireike jusu pagalbos. Darau tokia nedidele like sistemuke. Dabar darau, jei zaidejas paspaudes jau like, ji isbrauktu is mysql. Viskas mysql'e atrodo taip: ip/ip/ip/ip ir t.t

if ($id == "like") {
$id = $_GET['k'];
$like = mysql_fetch_assoc(mysql_query("SELECT * FROM Akomentarai WHERE id='$id'"));
if ($like['id'] == null) {
header("Location:?id=anekdotai");
} else {
//Tikrinam, gal zaidejas jau paspaudes like :)
$hei = explode("/",$like['patinka']);

if (in_array($ip,$hei)) {
$randam = array_search($ip,$hei);
function ar($masyvas) {
$ilgis = count($masyvas);
$kitka = array();
for ($i = 0; $i < $ilgis; $i++) {

array_push($kitka,$masyvas[$i]);
}
return $kitka;
}
unset($hei[$randam]);

//78.62.59.74/78.62.59.75/78.62.59.73/78.62.59.71/

$delete = $hei[$randam]."".ar($hei);
if ($like['patinka'] == "")
mysql_query("UPDATE Akomentarai SET patinka='' WHERE id='$id'");
else
mysql_query("UPDATE Akomentarai SET patinka='$delete' WHERE id='$id'");
}


}
}

Taigi pvz mano ip : 777.777.777 ir mysql yra 777.777.777/523.421.746/111.4234.786 Taigi man reikia kad kai jau paspaudi,liktu 523.421.746/111.4234.786 :) Tikiuosi supratote. Dekui uz betkokia pagalba

Neprisijungęs justinas

  • Naujokas
  • *
  • Įrašai: 163
  • Karma: +16/-3
    • Žiūrėti profilį
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #1 Įrašytas: 2014-05-02 22:35:06 pm »
1. SQL injekcija
2. Kam taip storinti duomenis? Reliacinė duomenų bazė, tam ir yra ryšiai, storink kaip atskirus elementus :)

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #2 Įrašytas: 2014-05-02 23:18:10 pm »
visu pirma tai tu paziurek ant kiek skyleta tavo programa:

$id = $_GET['k'];
$like = mysql_fetch_assoc(mysql_query("SELECT * FROM Akomentarai WHERE id='$id'"));

jau nekalbant apie tai, kad nuaojdi mysql_ funkcijas, kurios yra nepatartinos, dar tiesiai is $_GET masyvo, i kuri as tau galiu duoti ka tik uzsimanysiu, dedi i SQL uzklausa.

kas bus, jei as irasysiu i url toki?:

?k='; DROP TABLE Akomentarai; --

o gi nutiktu taip: tavo lenta Akomentarai isnyktu ir jei neturi backupo, tai tu jos nesusigrazintum, o jei ir taip padarytum, tai as galeciau ant taves bot'a uzsiundyt, kuris kas valanda vis patikrintu ar netycia neatkurei jo, ir jei taip - vel ja panaikint.

saugumas yra daznai pamirstamas, taciau tai labai daug nulemia geram programos veikimui.

kiek suprantu cia jau editini kazkoki koda, bet kai kita kursi kazka naujo, kurk naudojantis framework'a koki nors: Phalcon (mano megstamiausias) Zend, Symfony ar kt. iskart bus daug saugumo skyliu uzlopoma ir siaip supratimas atsiras kokybisko kodo. Beto su frameworku pripratus dirbti daug daug greiciau viskas pasidaro :)
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs xkendzu

  • Naujokas
  • *
  • Įrašai: 19
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #3 Įrašytas: 2014-05-03 11:35:22 am »
O jei padaryciau $id = htmlentities($id,ENT_QUATES,"utf-8"); ? Ne saugiau butu?

Manualai.lt Forumas

Ats: Mysql ir masyvo pasalinimas
« Atsakymas #3 Įrašytas: 2014-05-03 11:35:22 am »

Neprisijungęs justinas

  • Naujokas
  • *
  • Įrašai: 163
  • Karma: +16/-3
    • Žiūrėti profilį
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #4 Įrašytas: 2014-05-03 12:11:49 pm »
O jei padaryciau $id = htmlentities($id,ENT_QUATES,"utf-8"); ? Ne saugiau butu?
Ne, jėzau, ne. Kodėl išivs gaima pagalvoti, kad html'ui processinti skirta funkcija padės apsaugoti SQL užklausą. htmlentities escapina HTML simbolius. Tam tikrose vietose padės, bet tikrai ne visur.

Jei nori toliau naudoti ext/mysql, tada stringus escapink, o numerius castink į int/float atitinkamai. O geriausia - naudok PDO ir prepared statements.

Neprisijungęs xkendzu

  • Naujokas
  • *
  • Įrašai: 19
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #5 Įrašytas: 2014-05-03 12:35:27 pm »
Sorry jei ko nesuprantu ;) Tiesiog mokinuosi ir tiek :) Beto ta problema susitvarkiau :) Dekui kad apsvietete del saugumo

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #6 Įrašytas: 2014-05-06 13:36:50 pm »
Nelabai peržiūrėjau kodą, bet kad _GET neišescapintasi ir man užkliuvo.

Tai tiesigo $id = mysql_real_escape_strint($_GET['id']);

O dar kokių saugumo plyšių yra? tas mysql_fetch_assoc kuom bllogas? Aš visada mysql_fetch_array naudoju.

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Mysql ir masyvo pasalinimas
« Atsakymas #7 Įrašytas: 2014-05-07 09:21:31 am »
jei naudosit PDO ir bind'insit kintamuosius nereikes galvot apie tokius saugumo dalykus, nes labai lengva praleist koki sql injection'a su mysql_ funkcijom, is dalies del to jos ir bus isvis issimtos is ateities PHP versiju, o dabar jau yra nepatartinos naudoti. Geriausia isvis yra naudoti framework'us, o ne tik bazine php kalba, tada dar maziau saugumo bedu, kodas buna labiau strukturizuotas ir ji lengviau redaguoti, kurti, suprasti prisedus po metu, daznai greiciau veikia ir t.t.

phalcon
zend framework
symfony
Yii
codeigniter

tai keletas framework'u. mano megstamiausias yra phalcon, nes updeitai palaiko sena koda, nereik perrasinet atsinaujinant frameworka, jis jau compiled ir veikia kur kas greiciau nei visi kiti.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Manualai.lt Forumas

Ats: Mysql ir masyvo pasalinimas
« Atsakymas #7 Įrašytas: 2014-05-07 09:21:31 am »