Autorius Tema: PHP kodo Saugumas  (Skaityta 619 kartus)

Neprisijungęs Britas

  • Naujokas
  • *
  • Įrašai: 4
  • Karma: +0/-0
    • Žiūrėti profilį
PHP kodo Saugumas
« Įrašytas: 2012-08-16 19:00:47 pm »
Laba diena,

baiginėju kurti jau savąjį mini tvs, o leisti į interneto platumas nesinori, kai apie saugumą mažai ką žinau. Todėl noriu paklaust kaip apsaugot savo kodą nuo įsilaužėlių. Naudoju tik mysql_real_escape_string() ten kur SELECT'inu duomenis (Vardą, slaptažodį).
« Paskutinį kartą keitė: 2012-08-17 07:35:02 am sukūrė Lukas Liesis »

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Saugumas
« Atsakymas #1 Įrašytas: 2012-08-17 07:34:13 am »
escapin'ti reikia viska ka suveda vartotojas ir tada daugiausiai bedu jau busi isvenges :)

taip pat gali paskaityti cia:
http://net.tutsplus.com/tutorials/php/5-helpful-tips-for-creating-secure-php-applications/
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

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

Neprisijungęs Britas

  • Naujokas
  • *
  • Įrašai: 4
  • Karma: +0/-0
    • Žiūrėti profilį
Ats: PHP kodo Saugumas
« Atsakymas #2 Įrašytas: 2012-08-17 09:20:47 am »
Aišku, o turiu klausimą dėl escape'inimo.

Sakykim mano url galima įvesti taip: ?page=5. Ir tą 5 skaičių ima iš mysql (SELECT'ina) ar reikia escape'inti, nes gi vartotojas gali įvesti savo tą skaičių kokį nori.

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: PHP kodo Saugumas
« Atsakymas #3 Įrašytas: 2012-08-17 09:21:18 am »
Taip

Manualai.lt Forumas

Ats: PHP kodo Saugumas
« Atsakymas #3 Įrašytas: 2012-08-17 09:21:18 am »

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: PHP kodo Saugumas
« Atsakymas #4 Įrašytas: 2012-08-17 10:23:30 am »
Gali įvesti ir ne tik skaičių :) Kuo labiau filtruok kiekvieną vartotojo atsiųstą raidę.
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Neprisijungęs Gintas Kovalevskis

  • Dalyvis
  • **
  • Įrašai: 418
  • Karma: +15/-0
    • Žiūrėti profilį
    • Asmeninis portfolio
Ats: PHP kodo Saugumas
« Atsakymas #5 Įrašytas: 2012-08-17 13:15:39 pm »
Pats svarbiausias turbūt dalykas yra apsisaugojimas nuo SQL injekcijos - tikrinti kiekvieną vartotojo įvestį.

Toliau, failų įkėlimas. Į failą galima visada įdėti taip sakant virusiuką, kuris galėtų paimti failo turinį ar padaryti dar ko nors baisiau. Čia reikėtų tikrinti failų tipus, galūnes, riboti dydį ir t.t.

Administratoriaus pultą laikyti kaip atskirą TVS t.y. jis neturėtų būti susijęs su pagrindiniu TVS, taip pat įdiegiant TVS duoti vartotojui pasirinkti administratoriaus aplankalo pavadinimą, šitas dalykas praverstų jei kas nors sužinotų administratoriaus slaptažodį, o kaip pasiekti valdymo pultą nežinotų.

Suteikti vartotojui galimybę pasikeisti savo configo pavadinimą į norimą pvz. config5464564.php arba 546464.php ir pan. pavadinimus ne taip lengva atspėti, todėl ir duomenys prie mysql netaip lengvą būtų gauti.

Vartotojui registruojantis, reikalauti iš jo kuo sunkesnio slaptažodžio - geriausia reikalauti, kad būtų didžiosios, mažosios raidės, skaičiai ir simboliai kaip . , ' : " ? ir pan.

Venk sausainėliuose (cookies) saugoti svarbią informaciją, kadangi prie jų visai nesunku prieiti. Pamenu draugas su cookie informacija be pastangų sužinojo mokytojo el. žurnalo slaptažodį ir vartotojo vardą.

Na čia gal labiau išvardinau bendrai TVS saugumo spragas, nei vien PHP. 

Nori ir tu tokio paveiksliuko? Apsilankyk FeedMage puslapyje

Neprisijungęs bendzaminas

  • Naujokas
  • *
  • Įrašai: 185
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: PHP kodo Saugumas
« Atsakymas #6 Įrašytas: 2012-08-18 19:35:45 pm »
Pats svarbiausias turbūt dalykas yra apsisaugojimas nuo SQL injekcijos - tikrinti kiekvieną vartotojo įvestį.

Toliau, failų įkėlimas. Į failą galima visada įdėti taip sakant virusiuką, kuris galėtų paimti failo turinį ar padaryti dar ko nors baisiau. Čia reikėtų tikrinti failų tipus, galūnes, riboti dydį ir t.t.

Administratoriaus pultą laikyti kaip atskirą TVS t.y. jis neturėtų būti susijęs su pagrindiniu TVS, taip pat įdiegiant TVS duoti vartotojui pasirinkti administratoriaus aplankalo pavadinimą, šitas dalykas praverstų jei kas nors sužinotų administratoriaus slaptažodį, o kaip pasiekti valdymo pultą nežinotų.

Suteikti vartotojui galimybę pasikeisti savo configo pavadinimą į norimą pvz. config5464564.php arba 546464.php ir pan. pavadinimus ne taip lengva atspėti, todėl ir duomenys prie mysql netaip lengvą būtų gauti.

Vartotojui registruojantis, reikalauti iš jo kuo sunkesnio slaptažodžio - geriausia reikalauti, kad būtų didžiosios, mažosios raidės, skaičiai ir simboliai kaip . , ' : " ? ir pan.

Venk sausainėliuose (cookies) saugoti svarbią informaciją, kadangi prie jų visai nesunku prieiti. Pamenu draugas su cookie informacija be pastangų sužinojo mokytojo el. žurnalo slaptažodį ir vartotojo vardą.

Na čia gal labiau išvardinau bendrai TVS saugumo spragas, nei vien PHP.

Na, su config.php ir admin pulto direktoriją -  blogas sprendimas ir visiškai nereikalingas. Daug paliktų programuotojų spragų kompensuoja framework'ai - siūlyčiau naudoti juos.

Neprisijungęs justinas

  • Naujokas
  • *
  • Įrašai: 163
  • Karma: +16/-3
    • Žiūrėti profilį
Ats: PHP kodo Saugumas
« Atsakymas #7 Įrašytas: 2012-08-22 12:18:58 pm »
Dėl MySQL - PDO ir tik PDO su normaliais prepared statementais. Dėl viso kito:
https://www.owasp.org/index.php/Top_10_2010-Main
http://www.phptherightway.com/

Manualai.lt Forumas

Ats: PHP kodo Saugumas
« Atsakymas #7 Įrašytas: 2012-08-22 12:18:58 pm »