Prenumeruok RSS

Straipsniai pagal gairę

PHP upload galimas bugas tavo kode ir backupu import/export idėja

Daugelis pradeda programuoti ir saugumo savo “programėlių” mažai rūpinasi, vien iš nežinojimo. Kuo daugiau patirties tuo paprastesni uždaviniai sprendžiami turėtų kuo sudėtingiau. Bent taip esu susidaręs nuomone, kur seniau problemos nematydavau, dabar atorodo uch… problematiška.

Štai keletas pavyzdžių, ką gali padaryti su jūsų paliktom “klaidelėm” ir pan.

Kartais padaro programėlė, kuri leidžia bilekam uploadinti failus. Tarkim nuotraukas ir kitus failus. Ir neduok dieve palikta galimybė uploadinti bile kokio tipo failą, tuo galima pasinauti ir dar kaip.
Tuo pasinaudojau ir aš, bet jau uždaroje zonoje, buvau pamiršęs FTP slaptažodį, o reikėjo iš tos svetainės atsinaujinti failus, ir pasiimti naujausią SQL dumpą. Na ką? Jei galima uploud oadaryti bilekokį failą, tai vadinasi galima įkelti ir PHP skriptą, tarkim pavadinkim job.php. Ką galima su juo padaryti? Ogi labai daug! Ypač nusimanantiems. Taigi pasinaudojas ta upload galimybę susizipavau visą direktoriją, ir parsitempiau į kompiuterį. Kitas dalykas reikėjo SQL dumpo, tai irgi pasirodo paprasta, suzinojus kur mėtosi mysqldump, ir žinant mysql slaptažodį laisvai galima pasidaryti dump, ir gal net taip patogiau.

Kaip tai veikia?

Ogi gan paprastai, pasinaudojus php komanda system

system() is just like the C version of the function in that it executes the given command and outputs the result.

The system() call also tries to automatically flush the web server’s output buffer after each line of output if PHP is running as a server module.

Taig bandom;

galima panagrinėti failų struktūra, kaip pavyzdys ls -la komanda, ir t.t. Žiūrint ko jums reikia. Tos komandos jums veiks tarkim *nix serveryje net jei nėra galimybės prisijungti prie shh.

Taigi elementarios eilutės:

<?
set_time_limit(0);
$str = “ls -la”; // pasirinkta komanda
echo system($str);
?>

Taigi keletas kitų naudingų komandų. Taigi galima suzipuoti direktoriją, gauti mysql dumpus ikelti mysql dumpą ir pan, ko tik prireiks.

Keletas svarbių komandų. Daugelis naudoja phpmyadmin’ą kuriuo įkelia lentelę, didelė problema būna kad upload failas limituotas. Standartiškai būna 2MB, o dažnai dideli projektai saugo daugiau nei 2MB duomenų, tad koks backup.sql failas gali būti didelis ir juo neįkelsi per phpmyadminą. Patogiausia naudotis per ssh mysqldump ir mysql komandomis. O kai neturi galimybės ssh turėti gali ir pats greitai pasirašyti simple komandas. Tai gali būti naudojama ir backupų darymui (import/export);


Įkelti sql dump failą 
/path/to/mysql -u USER -pPASSWORD DBNAME < /path/to/dir/dumpas.sql

Eksportuojam dump failą
/path/to/mysqldump -u USERNAME -pPASSWORD DATEABAE > /path/to/dir/dumpas.sql

 taigi pasinaudojus system(), laisvai importuosim/eksportuosim failus. o jei jau palikai spragą upload skripte kenkėjas ne tik gali parsisiųsti visus failus tavo direktorijoje, bet ir užvaldyti serveriuką. Dėl to turėtų pasirūpinti serverio administratoriai bei programuotojai, kad tokios klaidos nevelti.

PHPArch 2005, rugsėjis

Dar vienas mėnesiukas ir dar vienas PHP architekto numeriukas. Mano nuomone šis numeriukas per daug neįpatingas, bet mini apžvalga leis jums nuspręsti. Stipriai dar nestudijavau ir kažkaip nėra laiko versti tad nepykite jad beveik viskas orginalo kalba.

Input filtering, part 3


 This month’s installment of Tips & Tricks concludes the series on filtering input, providing practical examples and helpful tips to filter input using regular expressions, test for the length of data, and ensure acceptable values.

Saugumo skyrelis “Input filtering, part 3”, beveik nieko naujo, bet visdėlto beveik. Aprašytos “Character Type Functions” funkcijos ir jų panaudojimas duomenų apdorojimui.

PHP manualas:
The functions provided by this extension check whether a character or string falls into a certain character class according to the current locale

Pagal manualą vienas iš pavyžių:

<b>PHP manualas:</b><br />&lt;?php<br />$strings = array('AbCd1zyZ9', 'foo!#$bar');<br />foreach ($strings as $testcase) {<br />&nbsp; &nbsp;if (ctype_alnum($testcase)) {<br />&nbsp; &nbsp; &nbsp; &nbsp;echo "The string $testcase consists of all letters or digits.n";<br />&nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp;echo "The string $testcase does not consist of all letters or digits.n";<br />&nbsp; &nbsp;}<br />}<br />?&gt;

Atsakymas:

The string AbCd1zyZ9 consists of all letters or digits.<br />The string foo!#$bar does not consists of all letters or digits.

 

Roll Your Own Database Abstraction Module


 You may already use database abstraction in your applications, perhaps through one of the available data-base abstraction layers, such as PEAR::DB, or PDO (see the PDO article in this issue), but what about various idiosyncrasies in the actual SQL? Perhaps you’ve never even considered this problem. This article will help you the data abstraction beast.

An Introduction to PDO


 A common complaint of the anti-PHP “expert” is the lack of a bundled, uniform database access component. With the advent of an improved object model, in PHP 5.0, a few of PHP’s core developers decided that the time has come to fill this hole with PHP Data Objects (PDO). The package, itself, has been in PECL for quite a while, now, but with the upcoming release PHP 5.1, PDO will be bundled in the main PHP distribution. What does it do? How does it work? One of PDO’s main developers, Ilia Alshanetsky, explains.

 What Are Trackbacks And Why Do They Exist


 if you’ve been around the internet for any length of time, chances are you’ve seen a weblog. Chances are, if you’ve seen a weblog, then you’ve seen a trackback. You might not have known it at the time or even understood what it was, but more and more of the blogging tools out there are using them. So, what are these elusive trackbacks and why do they even exist?

End-to-End Testing with PHP and Internet Explorer


 Automated testing can greatly improve the quality of your product. In this article, Oz presents a framework for creating automated tests that can simulate end-user activity. By leveraging the full faculty of Internet Ex-plorer, these tests can do just about anything that your users can do.

 Test Pattern: State of Confusion

Bug-free code is code you can understand completely. Unfortunately, it doesn’t take much to cause us uncertainty. Even a small amount of complexity will place demands on our memory, and our memory is extremely limited. If we tax our brains, we will get bugs. Marcus Baker examines how the number of bugs in a piece of code can be correlated to its readability.

 

PHPArch 2005 08

Kaip ir kiekvieną mėnesš išėjo PHP architekto žurnaliukas.

Ką galima rasti naujo?

  • Input filtering – na ką dar viena saugumo pamokėlė
  • AJAX pristatymas su JSPAN biblioteka
  • Licenzijos. Gan neblogas straipsniukas
  • Apie projektus ir PEAR 1.4.0
  • Pristatoma programėlė PHP runner
  • Saugumo temelė apie Shared Hosting
  • ir pan…

Su gimtadieniu, PHP kode :)

Šiand sukanka 10 metukų mūsų mylimai PHP. Tad su gimtadieniu :)

Istorija byloka kad:


 Jun 8 1995, 3:00 am 

Announcing the Personal Home Page Tools (PHP Tools) version 1.0.

These tools are a set of small tight cgi binaries written in C.
They perform a number of functions including:

. Logging accesses to your pages in your own private log files
. Real-time viewing of log information
. Providing a nice interface to this log information
. Displaying last access information right on your pages
. Full daily and total access counters
. Banning access to users based on their domain
. Password protecting pages based on users’ domains
. Tracking accesses ** based on users’ e-mail addresses **
. Tracking referring URL’s – HTTP_REFERER support
. Performing server-side includes without needing server support for it
. Ability to not log accesses from certain domains (ie. your own)
. Easily create and display forms
. Ability to use form information in following documents

Here is what you don’t need to use these tools:

. You do not need root access – install in your ~/public_html dir
. You do not need server-side includes enabled in your server
. You do not need access to Perl or Tcl or any other script interpreter
. You do not need access to the httpd log files

The only requirement for these tools to work is that you have
the ability to execute your own cgi programs.  Ask your system
administrator if you are not sure what this means.

The tools also allow you to implement a guestbook or any other
form that needs to write information and display it to users
later in about 2 minutes.

The tools are in the public domain distributed under the GNU
Public License.  Yes, that means they are free!

For a complete demonstration of these tools, point your browser
at: http://www.io.org/~rasmus


Rasmus Lerdorf
ras…@io.org
http://www.io.org/~rasmus

o aš negaliu švesti… sesija ant nosies :(

Tips and tricks (6 ir 7 “pamokėlės”)

Seniai nerašiau čia kažkokių tipsų triksų, kurie galėtų praversti naujokams. Šį kart prisiverčiau. Taigi pristatau dvi  simple pamokėles

Remote programming

Video transliaciją visos konferencijos galima pažiūrėti:


 http://distance.ktu.lt/vips/session-records.php?id=175 (Reikalingas IE, kad matyti dar is skaidres)

Arba galima pažiūrėti tik video be skaidrių:


  • mms://video.liedm.lt/irasai/vips/175/1751.wmv – PHP sesijos
  • mms://video.liedm.lt/irasai/vips/175/1752.wmv – Paprasčiausias PHP framework´as
  • mms://video.liedm.lt/irasai/vips/175/1753.wmv – Hierarchinės duomenų struktūros reliacinėse duomenų bazėse
  • mms://video.liedm.lt/irasai/vips/175/1754.wmv – Remote programming

Kam reikia mano skaidrės maloniai prašom žiūrėti parsisiuntus.

Naudingi linkai, kurie padės pasinaudoti šia technologija:

Na tiesa pasakius ne per stipriausiai pasiruošiau temai, organizatoriai biški lėtai viską organizavo :(, Ir laiko buvo minimumas. O be to skaudančia galva teko pasakoti, tad sorry už kokybė (tiesa negėriau).

PHP konferencija KTU festivalyje

Rengiama PHP konferencija, skirta visiems ja besidomintiems. Pernai ši konferencija susilaukė nemažo susidomėjimo, todėl šiemet ji organizuojama antą kartą.

Pilna auditorija dalyvių, puikūs vedėjai, ir įdomios temos pritraukė daug programavimo kalba besidominčių internetinių tinklapių fanų ir tik pradedančių, kurię nori išmokti šios plačiai paplitusios programavimo kalbos

Diskusija php.lt

http://www.festivalis.lt/lt/programa/it_konferencija/

http://www.infosa.lt/infoshow/index.php?PageID=62

Beje bus įmanoma stebėti viską internetu :)

PHP Enters the enterprise age

Nauji metai naujos idėjos. Kažką mylimas Zend siūlys naujo:

Zend Technologies will announce a new product that delivers the reliability, scalability and interoperability needed for enterprise-grade PHP applications.

For the first time, Web application developers and managers will have unparalleled error detection and recovery capabilities, top-notch performance and configuration control, as well as seamless integration to corporate back-ends. The new product consists of comprehensive features that streamline development and deployment, increase application responsiveness and provide detailed forensic data on problems that occur throughout the PHP application lifecycle. Driven by the needs of developers and IT personnel delivering business-critical PHP applications in the enterprise, revolutionize your PHP lifecycle with:

  • PHP Intelligence
  • PHP Performance Management
  • PHP Configuration Control
  • PHP/Java Interoperability

Taigi laukiam …

PHP puodeliai

Netyčia skaitydamas RSS įvairių puslapių atkapsčiau nuorodą. Taigi kolegos, gal kam reikia PHP puodelių?

http://www.izora.lt/puodeliai/

PHPArch Spalis

Niu ką vakar vakare sulaukiau naujo PHPArch.

Apie kiekvieną PHPArch atėjimą, pranešama el. paštu. Tai va guliu sau ramiai lovytėje ir galvoju ko nepasitikrinus pašto… pasiemu savo mobilųjį telefoną, patikrinu laiškus. SPAMus ištrinu, kad rytoj nesimaišyti tarp naujų, o įdomius perskaitau. Vienas buvo apie php architektą. Niu ką tingulys ėmė, tingėjau lipti iš lovos… (na jau beveik vidurnaktis buvo), galvoju, ko neparsisiuntus šio žurnalo į telefoną ir nepaskaičius. Atsidariau telefone esančią Operą, prisiloginęs parsisiunčiau. Išarchyvavau Zip archyvą. Niu ką liko pažiūrėti PDF dokumentą. Ta galimybė yra, bet pasirodo tas PDF+ skirtas SYMBIAN operacinei sistemai dar neplaiko užrakintų slaptažodžiu failų. Ką gi… teko ryto laukti….

Jei kam įdomu kas naujo šiame numeryje reportuoju:

  • Row, Row, Row Your Boat
    ZIP on the Fly with the Streams API

    Šis straipsniukas pasakoja apie galibybę supakuoti failus su PHP, panaudojus Streams. Be to daugiau supažindinama apie streams savybes.

  • Driving Multiple Databases Anywhere

    Nagrinėjamos PEAR:DB savybės ir pasakojama (žinoma, kaip ir visada su pavyzdžiais), kodėl tai gerai :)

  • Roll Your Own Template

    Turbūt kiekvienas web programeris turi pasidaryti sql klasę, šablonų sistemą, bei turinio valdymo sistemą. Čia iš tos serijos :). O man kuo toliau tuo labiau patinka Smarty.

  • Exposing Web Application Data Semantically Using RAP
    RDF API for PHP
  • Integrating PHP and OpenOffice
    Using PHP to Dynamically Manipulate and Convert OO documents

    PHP ir OpenOffice draugysė. Pasirodo laisvai galima atidarinėti OpenOffice dokumentus su mūsų naudojama PHP.

  • PHP-GTK and the Glade GUI Builder
    Building Client Applications with Style

    Pasakojama apie Glade GUI.  Iš into:

    “Many of you have probably tried out PHP-GTK to build simple applications. Coding a complex window program can be a time-consuming and error-prone task. However, using the Glade GUI builder can simplify the task and make window building fun again.”

  • Security Corner
    File Uploads 

Ir dar keletą kitų straipsnių…. Plačiau paskaitykite PHParch puslapyje

> home
  • Apie mane
  • Apklausos
  • Blogas
  • Lietblogs Search
  • Nuorodos
  • Reklama mano bloge
  • Search
  • Tags
  • Testas
  • Projektai
  • Kontaktuok
  • Archyvas