SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
OWASP – 21.03.2012, Kraków




              I WANT TO
                BELIEVE
                  IN
           STATIC ANALYSIS
                             Mateusz Kocielski
                             m.kocielski@logicaltrust.net
# whoami?
DYSKUSJA ZAMIAST
   WYKRESÓW!
A NA
      Z Z
    I
   L C
  A Y
 N T
A TA
 S
THE GOOD
ANALIZA STATYCZNA


● Metoda analizy statycznych
obiektów mająca na celu
wnioskowanie nt. ich własności
● Możemy analizować kod


źródłowy, binaria, wszystko co
się nie rusza.
Po co?

●   Żeby wykryć błędy w naszym kodzie (XSS,
    buffer overflow, ...)
●   Żeby wykryć niedoróbki w naszym kodzie
    (dead code, redundancja, …)
●   Żeby poprawić jakość projektu (patrz
    wyżej)
●   Żeby uzyskać metryki (np. złożoność kodu)
Narzędzia
●   KlocWork (C/C++/Java)
●   Fortify (Java...)
●   Coverity (C/C++)
●   FindBugs (Java)
●   Splint (C)
●   Clang (C)
●   RIPS (PHP)
●   PIXY (PHP)
Przykład
Co nas interesuje?
●   XSS
●   SQL injection
●   Code execution
●   CSRF
●   …


●   Jak wykrywa się powyższe błędy
    „automatami”?
Tendencyjny przykład!




    DEMO
Jak używać?


●   Integracja ze środowiskiem developerskim
●   Wspomagając proces przeglądu kodu
●   Na koniec projektu (czy jesteśmy skazani wtedy na
    porażkę?)
●   Jakich wyników powinniśmy się spodziewać?
THE BAD
Statyczna analiza jest
              skomplikowana
●   Bardzo trudna w przypadku języków
    statycznych (C, C++, JAVA...)
●   EKSTREMALNIE trudna w przypadku
    języków dynamicznych (PHP,
    Python)
●   Skąd bierze się trudność analizy?
    ●   Jak wnioskować nt. kodu?
    ●   Jak być pewnym wniosków?
    ●   Czy false positives to duży kompromis?
Problemy nierozstrzygalne
Jeżeli potrafimy wywnioskować coś nietrywialnego o
kodzie (np. obecność SQL injection), to potrafimy
rozwiązać problem stopu !




            ALAN TURING
Co możemy zrobić?




KOMPROMIS:
      Musimy się zgodzić na niedoskonałość analizy.

          Gdzie kończy się nasza cierpliwość?
WTF? - false positives!
●   Możemy dostrajać naszą analizę
    (np. klocwork, splint, …)
    ●   czułość, zakres, …
●   Możemy o niej myśleć programując
    ●   ograniczanie się do podzbiorów języka
    ●   dekorowanie kodu
●   Możemy przestać z niej korzystać... albo...
●   Możemy nauczyć się z nią żyć ...
SOA#1
THE UGLY?
THE UGLY!
PHP
●   Czy jest na sali ktoś, kto nie słyszał o PHP?
●   Bardzo popularny, dynamiczny język o
    dziwnych właściwościach!
●   Korzystają z niego giganci (NK, facebook, ...)
QUIZ - EASY



var_dump(0 == "php");
var_dump(NULL == array());
var_dump(array() == 0);
QUIZ - EASY


var_dump(0 == "php") = T
var_dump(NULL == array()) = T
var_dump(array() == 0) = F
QUIZ - HARDCORE++

var_dump(false == array());
var_dump(false == ””);
var_dump(array() == ””);
QUIZ – HARDCORE++ -
         PODPOWIEDŹ
var_dump(false == array())=T
var_dump(false == ””)=T
var_dump(array() == ””)=?
QUIZ – HARDCORE++ -
       PODPOWIEDŹ (2)
var_dump(false == array())=T
var_dump(false == ””)=T
var_dump(array() == ””)=?


X = Y i Y = Z to X = Z
var_dump(array() == ””)=F
RIPS
PIXY




http://pixybox.seclab.tuwien.ac.at/pixy/
Q&A

Más contenido relacionado

Similar a OWASP - analiza statyczna języka PHP

Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyPisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyAdam Sawicki
 
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScript
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScriptTworzenie, zaciemnianie i analiza złośliwego kodu JavaScript
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScriptKrzysztof Kotowicz
 
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...PROIDEA
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Sages
 
Technologie przetwarzania danych by ZAiIO
Technologie przetwarzania danych by ZAiIOTechnologie przetwarzania danych by ZAiIO
Technologie przetwarzania danych by ZAiIOArkadiusz Nowakowski
 
Noc informatyka - co ja wiem o testowaniu
Noc informatyka - co ja wiem  o testowaniuNoc informatyka - co ja wiem  o testowaniu
Noc informatyka - co ja wiem o testowaniuTomek Borek
 
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...PROIDEA
 
Testowanie. Wprowadzenie do testowania oprogramowania.
Testowanie. Wprowadzenie do testowania oprogramowania. Testowanie. Wprowadzenie do testowania oprogramowania.
Testowanie. Wprowadzenie do testowania oprogramowania. Radoslaw Smilgin
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...Future Processing
 
Girls in IT - QA
Girls in IT - QA Girls in IT - QA
Girls in IT - QA monterail
 
Machine learning vs big data od pomysłu do produkcji - Bartłomiej Twardowsk...
Machine learning vs big data   od pomysłu do produkcji - Bartłomiej Twardowsk...Machine learning vs big data   od pomysłu do produkcji - Bartłomiej Twardowsk...
Machine learning vs big data od pomysłu do produkcji - Bartłomiej Twardowsk...Evention
 
Prezentacja z Big Data Tech 2016: Machine Learning vs Big Data
Prezentacja z Big Data Tech 2016: Machine Learning vs Big DataPrezentacja z Big Data Tech 2016: Machine Learning vs Big Data
Prezentacja z Big Data Tech 2016: Machine Learning vs Big DataBartlomiej Twardowski
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?GameDesire Company
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
Język C++. Szkoła programowania. Wydanie V
Język C++. Szkoła programowania. Wydanie VJęzyk C++. Szkoła programowania. Wydanie V
Język C++. Szkoła programowania. Wydanie VWydawnictwo Helion
 
KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów kraqa
 

Similar a OWASP - analiza statyczna języka PHP (17)

Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyPisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
 
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScript
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScriptTworzenie, zaciemnianie i analiza złośliwego kodu JavaScript
Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScript
 
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Technologie przetwarzania danych by ZAiIO
Technologie przetwarzania danych by ZAiIOTechnologie przetwarzania danych by ZAiIO
Technologie przetwarzania danych by ZAiIO
 
Noc informatyka - co ja wiem o testowaniu
Noc informatyka - co ja wiem  o testowaniuNoc informatyka - co ja wiem  o testowaniu
Noc informatyka - co ja wiem o testowaniu
 
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
 
Testowanie. Wprowadzenie do testowania oprogramowania.
Testowanie. Wprowadzenie do testowania oprogramowania. Testowanie. Wprowadzenie do testowania oprogramowania.
Testowanie. Wprowadzenie do testowania oprogramowania.
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
 
Girls in IT - QA
Girls in IT - QA Girls in IT - QA
Girls in IT - QA
 
Machine learning vs big data od pomysłu do produkcji - Bartłomiej Twardowsk...
Machine learning vs big data   od pomysłu do produkcji - Bartłomiej Twardowsk...Machine learning vs big data   od pomysłu do produkcji - Bartłomiej Twardowsk...
Machine learning vs big data od pomysłu do produkcji - Bartłomiej Twardowsk...
 
Prezentacja z Big Data Tech 2016: Machine Learning vs Big Data
Prezentacja z Big Data Tech 2016: Machine Learning vs Big DataPrezentacja z Big Data Tech 2016: Machine Learning vs Big Data
Prezentacja z Big Data Tech 2016: Machine Learning vs Big Data
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Język C++. Szkoła programowania. Wydanie V
Język C++. Szkoła programowania. Wydanie VJęzyk C++. Szkoła programowania. Wydanie V
Język C++. Szkoła programowania. Wydanie V
 
KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów
 

Más de Logicaltrust pl

Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24
Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24
Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24Logicaltrust pl
 
Security Awareness po polsku - webinar 2019.11.29
Security Awareness po polsku - webinar 2019.11.29Security Awareness po polsku - webinar 2019.11.29
Security Awareness po polsku - webinar 2019.11.29Logicaltrust pl
 
8 zasad skutecznego security awareness
8 zasad skutecznego security awareness8 zasad skutecznego security awareness
8 zasad skutecznego security awarenessLogicaltrust pl
 
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019Logicaltrust pl
 
Ataki socjotechniczne w praktyce - Confidence 2019
Ataki socjotechniczne w praktyce - Confidence 2019Ataki socjotechniczne w praktyce - Confidence 2019
Ataki socjotechniczne w praktyce - Confidence 2019Logicaltrust pl
 
Minerva_lib - fuzzing tool
Minerva_lib - fuzzing toolMinerva_lib - fuzzing tool
Minerva_lib - fuzzing toolLogicaltrust pl
 
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018Logicaltrust pl
 
Spear phishing - jak się bronić? Case studies - Confidence 2018
Spear phishing - jak się bronić? Case studies - Confidence 2018Spear phishing - jak się bronić? Case studies - Confidence 2018
Spear phishing - jak się bronić? Case studies - Confidence 2018Logicaltrust pl
 
Redteaming in Poland - test cases (Security)
Redteaming in Poland - test cases (Security)Redteaming in Poland - test cases (Security)
Redteaming in Poland - test cases (Security)Logicaltrust pl
 
Redteaming w Polsce - przykłady
Redteaming w Polsce - przykładyRedteaming w Polsce - przykłady
Redteaming w Polsce - przykładyLogicaltrust pl
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiLogicaltrust pl
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiLogicaltrust pl
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Logicaltrust pl
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Logicaltrust pl
 
Torturing the PHP interpreter
Torturing the PHP interpreterTorturing the PHP interpreter
Torturing the PHP interpreterLogicaltrust pl
 
Socjotechnika w Internecie - metody ataku i obrony
Socjotechnika w Internecie - metody ataku i obronySocjotechnika w Internecie - metody ataku i obrony
Socjotechnika w Internecie - metody ataku i obronyLogicaltrust pl
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersLogicaltrust pl
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Logicaltrust pl
 

Más de Logicaltrust pl (20)

Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24
Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24
Jak cyberprzęstepcy okradają dziś firmy - webinar 2020.06.24
 
Security Awareness po polsku - webinar 2019.11.29
Security Awareness po polsku - webinar 2019.11.29Security Awareness po polsku - webinar 2019.11.29
Security Awareness po polsku - webinar 2019.11.29
 
8 zasad skutecznego security awareness
8 zasad skutecznego security awareness8 zasad skutecznego security awareness
8 zasad skutecznego security awareness
 
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019
Ataki socjotechniczne w praktyce - SecurityBSides Warsaw 2019
 
Ataki socjotechniczne w praktyce - Confidence 2019
Ataki socjotechniczne w praktyce - Confidence 2019Ataki socjotechniczne w praktyce - Confidence 2019
Ataki socjotechniczne w praktyce - Confidence 2019
 
Minerva_lib - fuzzing tool
Minerva_lib - fuzzing toolMinerva_lib - fuzzing tool
Minerva_lib - fuzzing tool
 
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018
"Spear phishing - jak się bronić? Case studies." - SecurityBSides 2018
 
Spear phishing - jak się bronić? Case studies - Confidence 2018
Spear phishing - jak się bronić? Case studies - Confidence 2018Spear phishing - jak się bronić? Case studies - Confidence 2018
Spear phishing - jak się bronić? Case studies - Confidence 2018
 
Redteaming in Poland - test cases (Security)
Redteaming in Poland - test cases (Security)Redteaming in Poland - test cases (Security)
Redteaming in Poland - test cases (Security)
 
Redteaming w Polsce - przykłady
Redteaming w Polsce - przykładyRedteaming w Polsce - przykłady
Redteaming w Polsce - przykłady
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracji
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
Devops security
Devops securityDevops security
Devops security
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
 
Torturing the PHP interpreter
Torturing the PHP interpreterTorturing the PHP interpreter
Torturing the PHP interpreter
 
Socjotechnika w Internecie - metody ataku i obrony
Socjotechnika w Internecie - metody ataku i obronySocjotechnika w Internecie - metody ataku i obrony
Socjotechnika w Internecie - metody ataku i obrony
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
 

OWASP - analiza statyczna języka PHP

  • 1. OWASP – 21.03.2012, Kraków I WANT TO BELIEVE IN STATIC ANALYSIS Mateusz Kocielski m.kocielski@logicaltrust.net
  • 3.
  • 4. DYSKUSJA ZAMIAST WYKRESÓW!
  • 5. A NA Z Z I L C A Y N T A TA S
  • 7. ANALIZA STATYCZNA ● Metoda analizy statycznych obiektów mająca na celu wnioskowanie nt. ich własności ● Możemy analizować kod źródłowy, binaria, wszystko co się nie rusza.
  • 8. Po co? ● Żeby wykryć błędy w naszym kodzie (XSS, buffer overflow, ...) ● Żeby wykryć niedoróbki w naszym kodzie (dead code, redundancja, …) ● Żeby poprawić jakość projektu (patrz wyżej) ● Żeby uzyskać metryki (np. złożoność kodu)
  • 9. Narzędzia ● KlocWork (C/C++/Java) ● Fortify (Java...) ● Coverity (C/C++) ● FindBugs (Java) ● Splint (C) ● Clang (C) ● RIPS (PHP) ● PIXY (PHP)
  • 11. Co nas interesuje? ● XSS ● SQL injection ● Code execution ● CSRF ● … ● Jak wykrywa się powyższe błędy „automatami”?
  • 13. Jak używać? ● Integracja ze środowiskiem developerskim ● Wspomagając proces przeglądu kodu ● Na koniec projektu (czy jesteśmy skazani wtedy na porażkę?) ● Jakich wyników powinniśmy się spodziewać?
  • 15. Statyczna analiza jest skomplikowana ● Bardzo trudna w przypadku języków statycznych (C, C++, JAVA...) ● EKSTREMALNIE trudna w przypadku języków dynamicznych (PHP, Python) ● Skąd bierze się trudność analizy? ● Jak wnioskować nt. kodu? ● Jak być pewnym wniosków? ● Czy false positives to duży kompromis?
  • 16. Problemy nierozstrzygalne Jeżeli potrafimy wywnioskować coś nietrywialnego o kodzie (np. obecność SQL injection), to potrafimy rozwiązać problem stopu ! ALAN TURING
  • 17. Co możemy zrobić? KOMPROMIS: Musimy się zgodzić na niedoskonałość analizy. Gdzie kończy się nasza cierpliwość?
  • 18. WTF? - false positives! ● Możemy dostrajać naszą analizę (np. klocwork, splint, …) ● czułość, zakres, … ● Możemy o niej myśleć programując ● ograniczanie się do podzbiorów języka ● dekorowanie kodu ● Możemy przestać z niej korzystać... albo... ● Możemy nauczyć się z nią żyć ...
  • 19. SOA#1
  • 22. PHP ● Czy jest na sali ktoś, kto nie słyszał o PHP? ● Bardzo popularny, dynamiczny język o dziwnych właściwościach! ● Korzystają z niego giganci (NK, facebook, ...)
  • 23. QUIZ - EASY var_dump(0 == "php"); var_dump(NULL == array()); var_dump(array() == 0);
  • 24. QUIZ - EASY var_dump(0 == "php") = T var_dump(NULL == array()) = T var_dump(array() == 0) = F
  • 25. QUIZ - HARDCORE++ var_dump(false == array()); var_dump(false == ””); var_dump(array() == ””);
  • 26. QUIZ – HARDCORE++ - PODPOWIEDŹ var_dump(false == array())=T var_dump(false == ””)=T var_dump(array() == ””)=?
  • 27. QUIZ – HARDCORE++ - PODPOWIEDŹ (2) var_dump(false == array())=T var_dump(false == ””)=T var_dump(array() == ””)=? X = Y i Y = Z to X = Z
  • 29. RIPS
  • 31. Q&A