2015 m. sausio 13 d., antradienis

PHP saugumas

Serveryje turint daug domenų, tikslinga aproboti PHP teises tik tame folderyje. Tai nustatoma, pvz:
open_basedir="/home/manodomenas.lt/public_html/:/tmp".
Žr. plačiau kaip automatizuoti: http://servernetworktech.com/2012/11/securing-php-when-using-virtualmin/

Kitas dalykas, PHP leisti kaip tik to vartotojo CGI programą, aprobojant tam vartotojui skirtus serverio resursus. Plačiau: https://www.virtualmin.com/node/24245


2015 m. sausio 9 d., penktadienis

SSL naudojimo klaidos

Patikrinti, kaip veikia SSL (HTTPS) galite: https://www.ssllabs.com/ssltest/analyze.html
Dažnos SSL klaidos:
Įspėjimus rodys SHA-1 nesaugūs sertifikatai: http://googleonlinesecurity.blogspot.co.uk/2014/09/gradually-sunsetting-sha-1.html
Neteisingai instaliuotas tarpinis sertifikatas
Neteisingai sukonfigūruota TLS programa
Nešifruotas trečiųjų šalių turinys https:// svetainėje

2015 m. sausio 8 d., ketvirtadienis

Tinklalapio saugumas

1. Trečiųjų šalių skriptų naudojimas.
Kartais naudodami populiarius trečiųjų šalių bibliotekas, rizikuojate serverio saugumu: ne visada spėsite atnaujinti šias bibliotekas, o programišių robotai, automatiškai skenuodami svetaines, glai ieškoti, ar egzistuoja tiesiog kokios nors bibiliotekos aplankas Jūsų serveryje, pvz "www.jususaitas.lt/ckeditor". Dėl šios priežasties, geriausia tokių bibliotekų aplankus pervardyti į neatspėjamus, pvz  "www.jususaitas.lt/ckeditorB6Yx". Jeigu tas bibliotekas iškviečiate ne tik iš apsaugotos admin dalies, bet ir viešoje dalyje, tia jų iškvietimo kodus taip pat vertėtų apsaugoti, pvz, naudojant jquery, skriptus glaite iškviesti taip:
$.getScript("/cke"+"ditorB6Yx/ckfi"+"nder/ckf"+"inder.js");
2. Užkrėstų failų paieška
Jeigu jau serveryje buvo įsilaužta, reikėtų praskenuoti visus serverio failus, apieškoti, ar nėra integruoto kenkėjiško kodo. Serveryje galima leisti tokią komanda:
cd /var/www
sploitpattern='r0nin|m0rtix|upl0ad|r57shell|cFaTaLisTiCz_Fx|Tukulesto|99shell|shellbot|phpshell|void\.ru|phpremoteview|directmail|bash_history|\.ru/|brute *force|multiviews|cwings|vandal|bitchx|eggdrop|guardservices|psybnc|dalnet|undernet|vulnscan|spymeta|raslan58|Webshell'

find ./ \( -regex '.*\.php$' -o -regex '.*\.cgi$' -o -regex '.*\.inc$' \) -print0 | xargs -0 egrep -il "$sploitpattern" | sort > potential_exploits.txt

ARBA

Replace the path below (.) with the absolute path of the directory you want to recursively scan. For example, you could recursively scan from the working directory:

grep '((eval.*(base64_decode|gzinflate|\$_))|\$[0O]{4,}|FilesMan|JGF1dGhfc|IIIl|die\(PHP_OS|posix_getpwuid|Array\(base64_decode|document\.write\("\\u00|sh(3(ll|11)))' . -lroE --include=*.php*

Esmė: ieškoti failuose tokių frazių, kaip eval, gzinflate, iframe ir pan. Jei serveris ne su root prieiga, galima failus atsisiųsti į kompiuterį ir ieškoti su programa http://www.wingrep.com/ (ji ieško failo viduje).

Vertingas išsamus sąrašas: http://www.exploit-db.com/papers/12871/

2014 m. lapkričio 3 d., pirmadienis

PHP: XLS(X) to array

Naudojantis phpExcel
<?php

function convertXLStoArray($infile, $outfile){
 
    if(!file_exists($infile) || !is_readable($infile) || !file_exists($outfile) || !is_readable($outfile))
    return FALSE;
 
    $fileType = PHPExcel_IOFactory::identify($infile);
    $objReader = PHPExcel_IOFactory::createReader($fileType);
 
    $objReader->setReadDataOnly(true);   
    $objPHPExcel = $objReader->load($infile);
    echo $objPHPExcel->getSheetCount(),' worksheet',(($objPHPExcel->getSheetCount() == 1) ? '' : 's'),' loaded<br /><br />';
    
  foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
  $arrayData[$worksheet->getTitle()] = $worksheet->toArray();
 }
 
 var_dump($arrayData);
}

2014 m. spalio 14 d., antradienis