asterisk
Sausis 15, 2008

PHP Klausimai #8

Atsakymai į šiuos klausimus bus publikuoti ketvirtadienį. Taip pat šiuo metu vyksta atsakymų į PHP Klausimus konkursas, kurio metu geriausiai ir greičiausiai atsakiusieji bus apdovanoti.

:

  1. Kokius žinote eilučių (”string”) palyginimo būdus ?
  2. Ką patartina atlikti, norint apsaugoti aplikaciją, kai su PHP vykdomos sisteminės komandos ?
  3. Žemiau pateikta dažnai pasitaikanti XML struktūra, naudojama soa (service oriented architectures). Koks tai standartas/protokolas ?
    <?xml version="1.0"?>
    <methodCall>
     <methodName>myMethod</methodName>
     <params>
      <param>
       <value><string>Labas!</string></value>
      </param>
     </params>
    </methodCall>
  4. Norint apsisaugoti nuo XSS/CSS (cross-site scripting) atakų, ko negalima pamiršti ?
  5. Kokia XML technologija naudojama, kai norima sujungti du skirtingus dokumentų tipus viename XML dokumente ?
  6. Bendrąja prasme, kas svarbiau: aplikacijos greitis (”performance”) ar “maintainability”?
  7. Kokie trys standartiniai metodai gali būti panaudoti atlikti specialius loginius veiksmus, kai bandomas pasiekti metodas ar narys kintamasis neegzistuoja ?
  8. Kokios funkcijos pagalba į masyvo pradžią galima įdėti elementą ?
  9. Kokia php.ini direktyva turi būti išjungta, kad apsaugotų aplikaciją nuo nutolusio PHP failo įvykdymo per “include” ar “require”?
  10. Duotas paprastas PHP skriptas:
    <?php
    $dom = new DomDocument();
    $dom->load('test.xml');
    $xpath = new DomXPath($dom);
    $nodes = $xpath->query(???????, $dom->documentElement);
    echo $nodes->item(0)->getAttributeNode('bgcolor')->value
      . "\n";
    ?>

    Kokia XPath užklausa turi eiti į “??????” vietą, kad atvaizduotų pirmos “body” viršūnės (angl. node), XML dokumente, “bgcolor” atributą ? Atsakymo variantai:

    1. "*[local-name()='body']"
    2. "/body[0]/text"
    3. "/body/body[0]"
    4. "name='body'"
    5. "*[lname()='body']"

Sėkmės atsakinėjant!

Panašūs straipsniai


“PHP Klausimai #8” komentarų: 5

  1. slibinas

    1. ===, strcmp, strcasecmp
    2. Jei neijungta safe_mode, escape’int visa komanda su escapeshellcmd() arba atskirus argumentus su escapeshellarg()
    3. XML-RPC (remote procedure calls)
    4. Escape’int viska, kas neturetu buti atvaizduojama kaip html’as (plain tekstui, tag’u atributu reiksmems ir pan.), pvz su htmlspecialchars($str, ENT_QUOTES).
    6. Svarbiau “maintainability”, nes programuotoju kurie ateity tobulins sistema sugaistas laikas yra brangesnis nei gelezis, kuria upgrade’inus taip pat padides performance.
    8. array_unshift

  2. Armandas

    1.
    1.1 Operatoriai: ==, ===
    1.2 Funkcijos: strcmp(), strncmp() ir jų case-insensitive variantai
    2. Nustatyti tinkamas teises, kad bet kas negalėtų kaitalioti komandų.
    3. RPC
    4. Filtruoti/apdoroti duomenis. Beje, XSS == Cross-site scripting != CSS ;)
    5. XSLT (klausimo formuluotė!)
    6. Daugeliu atvejų - maintainability.
    7. Kas yra “specialus loginis veiksmas”?
    8. array_unshift()
    9. register globals
    10. 3.

  3. Braunikas

    Sveiks dėkui už klausimus. Bandom atsakyt:
    1. ==, ===, strcmp(), strcasecmp()
    2. escapeshellcmd(), escapeshellargs(), sužiūrėti visus kelius, apskritai escapinti kuo daugiau.
    3. SOAP?
    4. Trumpai: vaizduojant jūzerio inputą escapinam html charus. Jei HTML leidžiamas, leidžiamus tagus dedam į whitelistą.
    5. nzn.
    6. Labai bendru atveju sakyčiau maintainability.
    7. __call(), __get(), __set().
    8. array_unshift()
    9. allow_url_fopen = On
    10. Duriam į 1 variantą.

  4. tygas

    1. strcmp() , ==, , strcasecmp(), lyginimas karpant, strnatcasecmp(), strnatcmp(), strncasecmp(), substr_compare()

    2. Paprastai jos draudžiamos ir bandoma ta pati ivykdyt kitais budais. Bet jei jau ištiko tokia beda, jog vis gi ju reikia tai tada filtruojam vis ieinancius duomenis ir leidžiam per interpretatoriu tik tas komandas, kurias norime leisti ir kuriuos 99% nepaliks saugumo skyliu

    3. (Standard Generalized Markup Language, ISO 8879:1986(E)

    4. Filtruot viska ir iš visu

    5. Yra dayg budu tam padaryti, bet daugumoje iš ju naudojama kokia nors XML API.
    XSL Transformations (XSLT)

    6. Žiurint kieno puses žiuresi, galutinio vartotjo ar .. MAINTAINABILITY

    7. class_exists()
    function_exists()
    isset()
    method_exists()

    8. array_unshift()

    9. the allow_url_include parametras in php.ini

    10. “/body[0]/text”;

  5. PHP Klausimai #8 (atsakymai) » Pixel.lt

    […] į PHP klausimus #8 gavome 4 atsakymus. Žinoma, tikėjome šiek tiek didesnio aktyvumo, jog geriausiai atsakę bus […]