PHP-Fusion Mods
Navigacija
Apsauga
Apsauga Neleista registracija: 28924
Å iandien: 13
Prisijungę nariai
» Svečių: 13
» Narių: 0

» Viso narių: 10,232
» Naujausias: EdvinasG1337

Prisijungimų istorija:
tabux 1 Diena
EdvinasG1337nepamenu
rolandas94nepamenu
Zbigniew@nepamenu
Edis2nepamenu
klubogerbejasnepamenu
Miskinisnepamenu
mast3rnepamenu
N1nt3ndnepamenu
Matze1987nepamenu
Piter_NSnepamenu
MariukasRnepamenu
Pask. modai
Prisijungti
Vardas

Slaptažodis



Dar ne narys?
Registruotis.

PamirÅ”ai slaptažodÄÆ?
PraŔyk naujo!.
ļ»æ
Naujausi praŔymai
[L] testas
Narių apklausa
Ar dar kuriate tinklalapius?

Ne
Ne
0% [0 Balsai]

Taip
Taip
88% [7 Balsai]

Naudojuosi socialiniais tinklais
Naudojuosi socialiniais tinklais
13% [1 Balsas]

Balsai: 8
Kad galėtum balsuoti, turi prisijungti.
Pradėta: 2022-05-29 19:54
Shoutbox
You must login to post a message.

2024-03-07 22:13
Oj Tabuxā€¦ apkabinčiau už tą moderatorių šŸ˜

2024-02-22 17:40
Å ypsosi2 jo buvo laikai.. Senukai jau mes. Bega laikas greiciau nei noretusi. Smagu matyti kad uzsuka seni nariai, ne as vienas Å ypsosi

2024-02-20 22:18
Zodziu.. Nostalgija. Sorry Tabux uz spamā€™a, netelpa viskas i viena shoutā€™a. šŸ˜

2024-02-20 22:14
Aisku dabar tokie laikai, kai turinio valdymo sistemas valdome one-click principu. Ne kaip seniau kode ieskodavom klaidu, norint moda pasileist.. :D paciam reikdavo susidiegt viska i ftp..

2024-02-20 22:03
Sveiki kolegos šŸ‘Œ kazkada rasiau greit 11 metu bet ziuriu greit 14 metu. šŸ˜„ baisuu, reik ta proga kazka sugalvot su php-f kaip jaunima itraukt.

Shoutbox Archive
Apache/PHP saugumo priemonės
Apache – tai atvirojo kodo HTTP serveris, naudojamas Unix ir Windows aplinkose, kuris aptarnauja daugiau nei pusę pasaulio internetinių svetainių.

PHP – (Hypertext Preprocessor) į internetą orientuota skriptų kalba, kurią galima įterpti į HTML tarp specialių ?ymių, pvz.: , . PHP skriptas yra interpretuojamas ir vykdomas serverio pusėje, todėl vartotojas gauna rezultatą (HTML ar XML formatu) savo nar?yklėje, ne?inodamas koks kodas buvo įvykdytas.

PHP į Apache gali būti įkompiliuotas kaip modulis (stati?kai), u?krautas kaip dinaminis modulis arba leid?iamas kaip CGI skriptas. Kai PHP naudojamas kaip Apache modulis (dinaminis ar statinis), jis paveldi Apache vartotojui („nobody“) skirtus leidimus. Skirtingiems vartotojams priklausantys PHP skriptai vykdomi su tomis pačiomis („nobody“) teisėmis, todėl gali atsirasti saugumo problemos. Jei vartotojo PHP skriptas naudojamas priėjimui prie failo, jis turi būti prieinamas „nobody“ vartotojui. Kitas vartotojas taip pat gali para?yti PHP skriptą ir prieiti prie svetimų failų, netgi jei OS priemonėmis tokia prieiga nėra leid?iama sistemos vartotojams (chroot priemonėmis).
Skripto, atidarančio ir parodančio “/etc/passwd” failą, pavyzdys:

$handle = fopen("/etc/passwd", "r");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
?>

Tokiu pat principu gali būti perskaitytas kito vartotojo tinklapių slapta?od?ių failas (.htpasswd), PHP arba CGI skriptas, su duomenų bazių slapta?od?iais ir pan.
Standarti?kai pagrindinė serverio konfigūracija httpd.conf faile neriboja prieigos prie failų, todėl vartotojas negali apsaugoti savo informacijos nuo kitų vartotojų.
?ią prieigos problemą galima i?spręsti derinant keletą saugą didinančių priemonių:

1. open_basedir direktyvą
2. safe_mode nustatymą
3. Apache autentifikaciją, autorizaciją ir priėjimo kontrolę
4. .htaccess failą
5. apsaugą nuo cURL funkcijų

Saugos problemų sprendimo būdai
1. open_basedir
open_basedir direktyva apriboja katalogus, prie kurių gali prieiti PHP skriptas. Naudojant open_basedir, leid?iama prieiti tik prie failų, esančių nurodytoje katalogų med?io vietoje.
Kai skriptas bando atidaryti failą fopen() ar gzopen() funkcijomis, patikrinama failo buvimo vieta. Jei failas yra nurodyto katalogų med?io i?orėje, PHP jo neatidarys. ?is apribojimas galioja ir simbolinėms nuorodoms – jei nuoroda rodo u? open_basedir katalogų med?io, priėjimas bus draud?iamas. open_basedir keliai nuo tėvinių katalogų yra automati?kai paveldimi.
Apribojimas nurodomas su open_basedir yra prefiksas, bet ne katalogo pavadinimas. Tai rei?kia, kad „open_basedir = /dir/incl“ leid?ia pasiekti ir „/dir/include“ bei „/dir/incls“, jei tokie egzistuoja. Norint, kad būtų galima prieiti prie failų, esančių tik nurodytoje direktorijoje, pabaigoje reikia pridėti „/“ (open_basedir = /dir/incl/).

Pvz.: httpd.conf failas:

DocumentRoot /home/vaida/public_html/Naktis
ServerName www.serveris.litnet.lt
php_admin_value open_basedir /home/vaida/public_html/Naktis/


Speciali reik?mė „.“ parodo, jog darbinė skripto direktorija bus naudojama kaip pagrindinė direktorija. Tai nėra saugu, kadangi skripto darbinė direktorija gali būti pakeista naudojant chdir() funkciją, todėl tokio nustatymo naudoti nerekomenduojame.
?i direktyva nepriklauso nuo direktyvos safe_mode nustatymo.
Tam tikriems virtualiems serveriams open_basedir gali būti i?jungta, httpd.conf faile naudojant direktyvą:
php_admin_value open_basedir none

2. safe_mode
PHP direktyva „safe_mode“ padeda i?spręsti saugumo problemą, kai serveriu dalinasi keli vartotojai.
Kai safe_mode aktyvuota, PHP tikrina ar paleisto skripto savininkas sutampa su atidaromo failo savininku. Jei savininkai nesutampa, arba skriptas yra ne failo savininko direktorijoje, sugeneruojamas klaidos prane?imas ir skriptas sustabdomas.
Standarti?kai safe_mode vėliavėlei priskiriama reik?mė „0“ (re?imas i?jungtas). Dėl saugumo u?tikrinimo, safe_mode turėtų būti aktyvuota.

• safe_mode aktyvavimas visam serveriui, php.ini faile
safe_mode = On
• safe_mode aktyvavimas vienam konkrečiam virtualiam serveriui, httpd.conf faile:
php_admin_value safe_mode On

Jei tam tam tikram skriptui reikalinga prieiti prie failo, priklausančio kitam vartotojui, nebūtina safe_mode re?imo i?jungti visam serveriui. Tokį i?jungimą galima padaryti vieno virtualaus serverio kontekste naudojant vieną i? ?ių direktyvų:

php_admin_flag safe_mode Off
php_admin_value safe_mode 0

3. Apache autentifikacija, autorizacija ir priėjimo kontrolė
Autorizacija, autentifikacija, priėjimo kontrolė - trys skirtingi būdai nuspręsti ar vartotojui davus u?klausa į resursą, jam tas resursas bus grą?intas.
• Autentifikacija reikalinga vartotojo tapatybei identifikuoti. Ji susieja vartotojo vardą ir slapta?odį.
• Autorizacija nustato ar jau identifikuotas vartotojas turi teisę prieiti prie resurso. Autorizacijos metu tikrinama ar vartotojas priklauso tokį leidimą turinčiai grupei, ar yra tinkamas jo saugumo lygis.
• Priėjimo kontrolė yra bendresnis priėjimo prie tinklo resursų kontroliavimo būdas. Priėjimas gali būti suteiktas arba atmestas atsi?velgiant į daugybę kriterijų, pvz.: kliento tinklo adresą.
Daugeliu atveju ?ios technikos yra susijusios, todėl naudojamos kartu. Jų pagalba galima priėjimą prie tam tikrų resursų leisti tik tam tikriems vartotojams.
Prie? naudojant autentifikaciją turi būti sukurtas slapta?od?ių failas ir tinkamai pakeista serverio konfigūracija. Taip pat galima susikurti vartotojų grupių failą. Slapta?od?ių failo kūrimas:
htpasswd c ~/passwords/.htpasswd username
Įvykd?ius komandą, htpasswd papra?ys įvesti slapta?odį ir jį pakartoti.

htpasswd – Apache paketo programa slapta?od?ių failo kūrimui.
• Parametras –c naudojamas failo kūrimui. Jo nereikia nurodyti, pridedant naujus vartotojus į jau egzistuojantį slapta?od?ių failą;
• ~/passwords/.htpasswd – slapta?od?ių failas;
• username - vartotojo vardas, įtraukiamas į slapta?od?ių failą kūrimo metu.

Naujo vartotojo įtraukimas į jau egzistuojantį failą (be –c parametro):
htpasswd ~/passwords/.htpasswd admin

Slapta?od?iai faile saugomi u??ifruota forma.
Slapta?od?ių failas turi būti skaitomas-ra?omas tik savininkui, ir skaitomas tik apache procesui (vartotojui nobody). Tai galima padaryti suteikiant failui teises 640, ir nobody vartotoją padarant vartotojo grupės nariu (tačiau joks kitas sistemos vartotojas neturi būti vartotojo grupės nariu!).

Pavyzd?iui:
Administratorius:
root@server:~# usermod g vartotojas nobody
Vartotojas:
vartotojas@server:~$ htpasswd -c passwords/password.file draugas
New password:
Re-type new password:
Adding password for user draugas
vartotojas@server:~$ chmod 640 passwords/password.file
vartotojas@server:~$ ls l passwords
total 4
-rw-r-----1 vartotojas vartotojas 22 Jun 23 14:41 password.file
Konfigūracijos pakeitimas, kad būtų kreipiamasi į slapta?od?ių failą:
AuthType Basic
AuthName "Administratoriai"
AuthUserFile /home/user/passwords/.htpasswd
Require user vaida admin

?ios direktyvos gali būti saugomos .htaccess faile tam tikroje apsaugotoje direktorijoje arba serverio konfigūraciniame faile httpd.conf skirsnyje. Jei konfigūracija keičiama httpd.conf faile, Apache reikia perkrauti, jei įkeliama į .htaccess failą, jos pradeda galioti i? karto. Priėjimo prie resursų leidimas suteikiamas tik nurodytiems vartotojams ir tik įvedus teisingus slapta?od?ius.
Jei norima autentifikuoti grupę vartotojų, kuriamas grupės failas, kuriame i?vardinami grupei priklausantys vartotojai (atskiriami tarpo simboliu), Pvz.: admin vaida guest
Konfigūracija pakeičiama taip:
AuthType Basic
AuthName "Autoriai"
AuthUserFile /home/user/passwords/.htpasswd
AuthGroupFile /home/user/passwords/.htgroup
Require group authors

Priėjimo kontrolei naudojamos Allow ir Deny direktyvos, kurios kontroliuoja priėjimą prie resursų pagal besikreipiančio vartotojo hosto vardą ar hosto adresą.
Direktyva Order nurodo Apache kokia tvarka kreiptis į filtrus.
Pvz.:

Order Deny,Allow
Deny from all
Allow from hostovardas.pavyzdys.com

4. .htaccess failai
.htaccess failai leid?ia nustatyti specifinius parametrus atskiriems katalogams. Faile būna viena ar daugiau konfigūracinių direktyvų. Jis saugomas tam tikrame kataloge, ir direktyvos taikomos tam katalogui bei jo subkatalogams. Priėjimo kontrolės failo pavadinimas nurodomas httpd.conf faile AccessFileNamedirektyvoje: AccessFileName .htaccess . Standartinį failo vardą galima pakeisti.
Kokius nurodymus galima įra?yti į .htaccess failą, apibrė?ia AllowOverride direktyva. AllowOverride direktyvos sintaksė:
AllowOverride All|None|directive-type [directive-type].
AllowOverride galima nurodyti tik katalogui, bet ne vietai ar failui. Kai direktyvai nustatoma reik?mėNone, .htaccess failas yra ignoruojamas, serveris jo neskaito.
Mus dominantys direktyvų tipai yra AuthConfig, leid?iantis naudoti autorizacijos direktyvas (pvz.: AuthName, AuthType, Require), ir Limit, leid?iantis naudoti direktyvas, kurios kontroliuoja priėjimą prie kompiuterio (Allow, Deny, Order)
Direktyvos naudojimo pavyzdys: AllowOverride AuthConfig Limit
Autentifikacijos vykdymas .htaccess faile:
AuthType Basic
AuthName "Password Required"
AuthUserFile /home/vartotojas/passwords/password.file
Require valid-user
.htaccess failą reikėtų naudoti tik tuo atveju, kai norima da?nai pakeisti konfigūraciją atskirose direktorijose arba nėra galimybės prieiti prie httpd.conf failo. Tuomet vartotojams suteikiama galimybė patiems keisti katalogo konfigūraciją (pvz.: jei internetinių paslaugų teikėjas talpina daug skirtingų vartotojų svetainių viename kompiuteryje, jis gali norėti, kad vartotojai patys keistų konfigūraciją).
.htaccess naudojimo reikia vengti dėl na?umo ir saugumo problemų.
Na?umo problema. Kai nustatoma AllowOverride, leid?ianti naudoti .htaccess failus, Apache .htaccess failų ie?kos kiekviename kataloge. Apache ie?ko .htaccess failų visuose auk?tesniuose kataloguose tam, kad ?inotų visas direktyvas, kurias turi vykdyti. Taigi, jei į failą kreipiamasi i? katalogo /www/htdocs/pavyzdys, Apache turės ie?koti ir ?ių failų:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/pavyzdys/.htaccess
Vadinasi, kiekvienam priėjimui i? to katalogo reikalingi keturi papildomi kreipiniai ir .htaccess failai yra skaitomi kiekvieną kartą, kai tik kreipiamasi į dokumentą. Todėl naudojant .htaccess failus suma?ėja na?umas nepriklausomai nuo to, ar jie i? tikrųjų egzistuoja. Būtina kaip galima daugiau apriboti direktorijas, kuriose ie?koma .htaccess failo. Pvz.:

AllowOverride None


AllowOverride FileInfo AuthConfig Limit


Pagal ?ias direktyvas, .htaccess failai neie?komi niekur, i?skyrus vartotojų public_html katalogus.
Saugumo problema. Suteikiant vartotojams leidimą keisti serverio konfigūraciją kyla grėsmė, kad bus atlikta pakeitimų, kurių negalės kontroliuoti serverio administratorius.
Bet koks konfigūracijos pakeitimas lygiai taip pat efektyviai gali būti daromas skirsnyje pagrindiniame serverio konfigūracijos faile httpd.conf. Pavyzd?iui:
/www/virtuals/server1/htaccess faile para?yta direktyva
AddType text/pavyzdys .exm
yra ekvivalentus įra?as httpd.conf faile:

AddType text/pavyzdys .exm


Autentifikacijos direktyvas rekomenduojama para?yti httpd.conf faile, o .htaccess naudoti tik tuo atveju, jei nėra priėjimo prie pagrindinio serverio konfigūracinio failo.

5. Apsauga nuo cURL funkcijų
open_basedir direktyvos teikiamas saugumas gali būti pa?eistas naudojant CURL funkcijas curl_init() ir curl_exec(), kurios PHP skriptui gali leisti prieiti prie failų, esančių open_basedir priskirtos direktorijos i?orėje. Vartotojai, turintys teisę kurti ir modifikuoti PHP skriptus, gali apeiti open_basedir apribojimą ir nar?yti po visą failų sistemą.
Pvz.: jei php.ini faile open_basedir = /var/www/html, galima perskaityti /etc/passwd pasinaudojus cURL funkcijomis.
curl.php:

$ch = curl_init("file:///etc/passwd");
$file=curl_exec($ch);
echo $file
?>

/etc/passwd turinį galima pamatyti įvykd?ius komandą
links -dump http://www.kazkoksserveris.lt/curltest/curl.php

Toks pa?eid?iamumas pastebėtas PHP 4.3.8 versijoje su CURL 7.10.6, tačiau jis gali pasireik?ti ir kitose versijose.
Apsisaugojimas:
1. u?drausti cURL funkcijų palaikymą PHP.
2. pasinaudoti programos taisiniu (patch):
3. diff -ru php4-4.3.10.old/ext/curl/curl.c php4-4.3.10/ext/curl/curl.c
4. --- php4-4.3.10.old/ext/curl/curl.c 2005-01-20 14:20:15.000000000 +0000
5. +++ php4-4.3.10/ext/curl/curl.c 2005-01-20 15:34:06.000000000 +0000
6. @@ -682,6 +682,14 @@
7. WRONG_PARAM_COUNT;
8. }
9. + /* check open_basedir restriction */
10. + {
11. + char *u = Z_STRVAL_PP(url);
12. + if(!u || (!strncmp(u, "file://",7) && php_check_open_basedir((u+7) TSRMLS_CC)))
13. + RETURN_FALSE;
14. + }
15. alloc_curl_handle(&ch);
ch->cp = curl_easy_init();
________________________________________
PRIEDAI
I. Virtualių hostų kūrimas Apache serveryje. Virtualūs hostai gali būti kuriami trimis skirtingais būdais pagal:
1. skirtingus portus
2. skirtingus IP adresus
3. skirtingus vardus

Galimas ir mi?rus būdas derinant i?vardintus būdus tarpusavyje. Virtualių hostų (pagal skirtingus portus) sukūrimas httpd.conf faile:

Listen 80
Listen 8080
NameVirtualHost 111.22.33.44:80
NameVirtualHost 111.22.33.44:8080

DocumentRoot /home/vaida/public_html/Diena
ServerName server.litnet.lt


DocumentRoot /home/vaida/public_html/Naktis
ServerName server.litnet.lt


II. CURL
CURL Client URL bibliotekos funkcijos
PHP palaiko liburl – biblioteką, kuri leid?ia prisijungti prie severių, naudojančių įvairius protokolus. libcurl palaiko ?iuos protokolus: http, https, ftp, gopher, telnet, dict, file, ldap. ?ios funkcijos įdėtos į PHP 4.0.2.
Reikalavimai
Norint naudotis CURL funkcijomis, reikia suinstaliuoti CURL paketą.
• PHP 4.2.3 – CURL 7.9.0 ar auk?tesnę versiją
• PHP 4.3.0 – CURL 7.9.8 ar auk?tesnę versiją
• PHP 5.0.0 – CURL versiją, auk?tesnę nei 7.10.5

Instaliavimas
Norint naudotis CURL, reikia sukompiliuoti PHP su parametru curl[=DIR], kur DIR yra vieta tos direktorijos, kurioje saugomos „lib“ ir „include“ direktorijos. „include“ direktorijoje yra katalogas „curl“, kuriame saugomi easy.h ir curl.h failai. „lib“ direktorijoje yra „libcurl.a“ failas. Pradedant nuo PHP 4.3.0 versijos, PHP galima sukonfigūruoti taip, kad CURL būtų galima naudoti URL srautams --with-curlswrappers.

Naudojimas
Kai sukompiliuojamas PHP su CURL palaikymu, galima pradėti naudoti CURL funkcijas. Pagrindinė idėja pagrįsta tokiais ?ingsniais:

1. Inicijuojama CURL sesija, naudojant curl_init()
2. Nustatomi parametrai siuntimui, naudojant curl_setopt()
3. Vykdoma sesija, naudojant curl_exec()
4. Baigiama sesija, naudojant curl_close()

curl_init - inicijuoja CURL sesiją
Apibūdinimas: curl_init() inicijuoja naują sesiją ir grą?ina atsakymą, kuris bus naudojamas curl_setopt, curl_exec() ir curl_close funkcijose. Jei neprivalomas parametras urlnurodytas, CURLOPT_URL parametras nustatomas toks, kokia yra parametro vertė (automati?kai). Tai galima nustatyti ir rankiniu būdu, naudojant curl_setopt() funkciją.
curl_exec - vykdo CURL sesiją

Apibūdinimas: ?i funkcija i?kviečiama po to, kai inicijuojama CURL sesija ir visos opcijos tai sesijai nustatytos. Jos paskirtis yra paprasčiausiai vykdyti anksčiau apibrė?tą CURL sesiją (paduodamą per ch).
Pvz.: naujos CURL sesijos inicijavimas ir svetainės įkėlimas į failą

<$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>

Pagal: http://cert.litnet.lt, nuoroda i straipsni - http://cert.litnet.lt/dokumentai/apache_php_security.html
5328
Logix · 2009-12-19 16:07

Kad ilgai sakityt :D

5399
dowyxz · 2010-04-09 21:08

Sveiki gal galetumete padeti sita viska padaryt web mano. mano skype dowyxz11

RaÅ”yti komentarą
Turite prisijungti, norėdami paraÅ”yti komentarą.