Jump to content
php.lv forumi

endrju

Reģistrētie lietotāji
  • Posts

    111
  • Joined

  • Last visited

Posts posted by endrju

  1. vispārīgāk runājot, es inputu iedalu 2x veidos

    1) iekšējais - developer ierakstītās vērtības/konstantes, ko padod/izmanto funkcijās. kā arī tās vērtības, kas kkad ir ienākušas no ārpuses un pēc pārbaudes/apstrādes tgd ir drošas

    2) ārējais - viss kas ir ienācis no ārpuses un vēl nav pārbaudīts (kad es teicu "user input", es domāju tieši par šo)

     

    jebkādam inputam neuzticēties būtu stulbi, jo ja pats neuzticies sev un vienai savai funkcijai liec vēlreiz pārbaudīt vērtības, ko padod cita tava funkcija, kas jau tās ir pārbaudījusi, tad tā ir kkāda pesimistiska paranoja. parasti plānojot applikācijas arhitektūru, drošības pārbaudēm ir savs līmenis, kurā tiek veiktas visas ar drošību saistītās darbības. bet citi līmeņi tālāk jau saņem drošus datus un var specializēties uz savu darbu

     

    tikai nesaki atkal, ka tas ir overheads. noteikti atradīsies kāds, kas par to nebūs aizdomājies :D

    nē, nu viss ok. skaidrs, ka tā nav diskusija tikai divatā. lasa arī citi. gan jau kādam noderēs.

     

    btw, tas labi, ka lasi grāmatas ;)

    khh, vai tad tik nožēlojamā stāvoklī 21. gs. esam, ka par to kinda of "jāuzslavē"?

    citēju ne jau tāpēc, lai parādītu, ka kaut ko lasu, bet adekvāti iederējās.

    pats vai tad neko nelasi?

  2. nav runa par int/float

    pielietojums ir vispārīgāks: skaitlis & teksts

     

    qn() saņem vērtību, kurai ir jābūt skaitlim. ja padotā vertība nav skaitlis, tad pēc tam toč būs

    qs() saņem stringu, un eskeipo to, ko vajag eskeipot

    varēji vienkārši atbildēt, ka arī integer gadījumā Tu lieto qn(), t.i., (float) typecast.

    p.s. skaidrot ko funkcijas dara gan bija redundant overhead.

  3. Sakarā ar to, ka pievēršat drošībai un administrēšanai lielu nozīmi, novēlu Jums veiksmi atrast kārtējo pseido-programmētāju!

     

    information disclosure mazāk nekā minūtē, step-by-step:

    1) atveram hxxp://www.coremedia.lv/

     

    2) redzam linku hxxp://www.coremedia.lv/lv/kontakti

     

    3) nomainam linku uz hxxp://www.coremedia.lv/lvv/kontakti un saņemam error-msg:

    Warning: Invalid argument supplied for foreach() in /var/www/coremedia/data/www/coremedia.lv/index.php on line 74

    Vai cik jauki! Produkcijas serveris lieto error_reporting.

     

    5) meklēšanā ierakstām "%" un saņemam error-msg:

    Warning: Invalid argument supplied for foreach() in /var/www/coremedia/data/www/coremedia.lv/pages/inc_search.php on line 44

    Vai cik jauki! Tak full-path redzam!

     

    7) atveram hxxp://coremedia.lv/pages/inc_search.php un saņemam error-msg:

    Fatal error: Call to a member function getPagination() on a non-object in /var/www/coremedia/data/www/coremedia.lv/pages/inc_search.php on line 3

     

    9) atveram hxxp://coremedia.lv/pages/ un redzam:

    [ ]	inc_form.php		10-Feb-2009 22:47 	5.1K
    [ ]	inc_pages.php		10-Feb-2009 22:40 	1.9K
    [ ]	inc_search.php		08-Dec-2008 23:01 	4.6K
    [ ]	inc_startpage.php	08-Dec-2008 23:01 	36 
    

    Vai cik jauki! "Options +Indexes"

     

     

    P.S. Tas viss nudien ātrāk par minūti. Retorisks jautājums: ko var izdarīt ilgākā laika posmā?

    Un tikai nevajag par kurpnieku bez kurpēm.

  4. fabula ir ļoti vnkārša: nevajag uzticēties user inputam

    Gandrīz precīzi. Precīzāk būtu - jebkādam inputam.

    Citešu no grāmatas "Beautiful Security" (2009):

    When we asked the senior Microsoft representatives at dinner why they did not send malicious data or provide malformed files as input to their product's testing, the answer was, "Why would a user want to do that" Their faces bore looks of shock and dismay that anyone would intentionally interact with a piece of software in such a way as to intentionally try to make it fail.

    Tas attiecas uz citāda veida inputiem, piemēram, xml+rpc; include() caur parametru vai htaccess, u.c. veidiem, kur tiek saņemts jebkāds inputs, ko useris var manipulēt - ne vienmēr tikai paredzētajā (GUI formas) veidā.

     

    servera puses "drošībai" (pret sql injekcijām) lieto

    function qn($n) {return is_null($n) ? 'NULL' : (float) $n;}  // sagatavo skaitli for mysql query
    function qs($s) {return is_null($s) ? 'NULL' : "'" . mysql_real_escape_string($s) . "'";}  // sagatavo stringu for mysql query
    

    Kāpēc float izpelnījies savu funkciju, bet integeri ne?

    Ok, jautāšu uzreiz - kāpēc integerus escape-o nevis typecast-o?

  5. Jāsaka ir tā, ka koderus arī skārusi krīze, nevajag jau liegties, pats esmu par 3 gadiem pirmo reizi sludināju ieliecis, kā arī beidzot kantora webu sācis veidot, tas viss dēļ tiem pidariem, kas nezin neko un tēlo, šajā forumā tādi ir daudz un dikti. Lai kāds man piedod, ja kādu aizkāru, bet tā tas ir. :)

    1) kādu sludinājumu ielicis?

    2) tautai jāzin savi varoņi.

  6. Vari lūdzu pateikt arī, kā to e parametru ir jānorāda konkrētajā gadījumā? Uzgooglēju piemērus, bet visur ir tādi pavisam elementāri ar vienu mainīgo un /e vienkārši galā pieliktu. Piemēri darbojas, bet lai kā es mēģinātu to e iebarot šeit, kaut kas nesanāk. Nav īsti pārliecības kur vinu jāliek ar visiem tiem "#" un tamlīdzīgi. Regulārās izteiksmes man vispār izskatās pēc ķerburu rindas :/

    Pārveidojot Tavu kodu:

    function mad182($sID) {
    	return '[' . substr($sID, 0, 2) . ']';
    }
    $text = 'http://www.youtube.com/watch?v=D_FxNaD8fDs';
    echo preg_replace("#(^|[\n ]|<a(.*?)>)http://(www\.)?youtube\.com/watch\?v=([a-zA-Z0-9\-_]+)(</a>)?#ime", 'mad182(\\4)', $text);
    

    P.S. Tava regulārā ekspresija neķers visus youtube URL pareizi (ja aiz ID vēl kas ir). Iedomājies, ka URL ir youtube.com/watch?v=ID⊂=...

  7. izmantojot ODEBC vari konverteet uz JEBKURU formatu ...

    MSSQL sajaa zinjaa ir ljoti baagaats...

    pats personiigi Esmu pardzinis no MSSQL uz MYSQL ( tikpat labi tur vareja buut Jbkura SQl bazeeta sisteema)

    Pat neizmantojot nekaadus starpfailus ... viens konkrets ODBC konektors un miers....

    Neesmu baigi ODBC mīcījis. Pievienojis esmu, bet tikai jau reāliem produktiem.

    Respektīvi, ar ko tos datus pēc tam dabūt ārā?

     

    ja pareizi atceros vareja arii iedziit MySQL damp failaa --> lasi plain textaa..

    Tieši to man vajag - plain/textā. Caur to pašu ODBC, saki?

  8. Kā var eksportēt MSSQL tabulu struktūras un datus tā, lai iegūtu izpildāmus SQL queries? Lai rezultātā būtu "CREATE TABLE .." un "INSERT INTO ...".

    Respektīvi, analoģiski ko iegūst MySQL ar mysqldump. Tiesa, iekš MySQL tabulas struktūru var iegūt arī ar "SHOW CREATE TABLE `tabula`".

     

    Līdz šim MSSQL tabulas sanācis eksportēt/importēt ar SQL Management Studio un tikai visu datubāzi, bet tās ir raw formātā, respektīvi, .bak faili un tie ir reāli PITA, kad pārliek uz citu serveri.

  9. Tirgus cena php programmerim ir no 200 līdz aptuveni 600 Ls uz rokas (nezinu kādam monstram jābūt php programmerim, lai maksātu vairāk par 600 Ls uz rokas). Nu 200 Ls jau būs iesācējam.

    Bwaahhahhahahaa, you always make me smile.

  10. Nevis pēdiņas ("), bet gan (`). Tā ir cita zīme. Tu pats pirmajā SELECT pie FROM tādas biji lietojis ap tabulas nosaukumu.

     

    Nu, ok, un ko Tev izdod šāds selekts: "SELECT `obj_Id` FROM `characters`" ?

  11. nevar tos nosaukumus kaut kā izdzēst?

    Kas ir eskeipot?

    Mēģiāju ar `` neizdevās jo tālāk sačakarējas

    1. Kur ir izvads "DESCRIBE `characters`"?

    2. Eskeipot Tavā gadījumā nozīmē kolonu rakstīt kā: "`obj_id`" nevis "obj_id" (bez pēdiņām).

    3. Nu un ko nozīmē "tālāk sačakarējas"?!? Kas čakarējas? Kur ir ievads (ko ievadīji), kur ir izvads (kļūdas paziņojums)? Mmmm?!

     

    Es nesaprotu kādu palīdzību te ceri sagaidīt, ja ne Tu atbildi uz jautājumiem, ne izpildi elementāras lietas un nemāki paskaidrot problēmu?

     

    P.S. http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

  12. Un - kods ir balstīts uz to pašu $_SERVER['PHP_AUTH_USER'].

     

    Tad sanāk akli uzticēties headerim, vai ne? Respektīvi, no headeriem var dabūt domēnu/useri, bet ne paroli. (Vismaz man tā pašlaik ir).

  13. Šitā neder?

     

    	header('HTTP/1.1 401 Unauthorized');
    	header('WWW-Authenticate: NTLM');
    	exit(0);
    

     

    Pārbaudīju ko dara SharePoint. Izrādās, ka tieši to pašu. Būtu ņēmis uzreiz manu kodu, nevis pļurgājies.

×
×
  • Create New...