3. mi nem vagyunk c辿lpontok
n Az adatok 辿rt辿kesek (pl.
tematiz叩lt email c鱈mlista
az {user} t叩bl叩b坦l)
n A l叩togat坦k 辿rt辿kesek
n Minden g辿p sz叩m鱈t
(botnetek)
n Vand叩lkodni j坦 :)
Tuesday, April 3, 12
5. Biztons叩gr坦l 叩ltal叩ban
n
Csak biztons叩gos 辿s nem
biztons叩gos oldal van, nincs
f辿lig biztons叩gos
n
Egy rossz sor k坦d is el辿g
ahhoz, hogy b叩rki b叩rmit
tehessen az oldalunkkal /
szerver端nkkel
n
A webfejleszt is programoz坦,
ugyan炭gy kell nek端nk is
t旦rdn端nk a biztons叩ggal,
mint annak, aki az amerikai
v辿delmi hivatalnak fejleszt.
Tuesday, April 3, 12
6. H叩l坦zati biztons叩g
n Titkos鱈tott protokollok haszn叩lata (FTP 辿s HTTP (felt旦lt辿s)
ker端lend)
n Wi-Fi eset辿n WPA titkos鱈t叩s
n Total Commander nem jelsz坦megrz
Tuesday, April 3, 12
8. B叩rki lehallgathat
n Nem csak a k辿pzett crackerek
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode monitor
sudo ifconfig wlan0 up
sudo wireshark
Tuesday, April 3, 12
9. 珂艶乙看鉛糸叩壊看一
n SSL-lel titkos鱈tott protokollok haszn叩lata:
n FTPS
n SFTP
n HTTPS
n SSH
n VPN
Tuesday, April 3, 12
10. 皆噛艶姻厩艶姻恢艶叩鉛鉛鱈岳叩壊看一
n
FastCGI (DDoS ellen jobb)
n
PHP
n
suhosin haszn叩lata
n
php.ini
n
open_basedir
n
disabled_functions
n
disabled_classes
n
safe_mode kikapcsol叩sa (hamis biztons叩g辿rzet, gyakorlatban
nem sokat v辿d)
Tuesday, April 3, 12
11. Formok biztons叩ga
n a hidden (辿s b叩rmilyen m叩s) mezk tartalmai ugyan炭gy
m坦dos鱈that坦ak a felhaszn叩l坦k 叩ltal! (meglepen sok oldal
t旦rhet 鱈gy)
n szerencs辿re ezt a form api kiv辿di
Tuesday, April 3, 12
12. Formok biztons叩ga
n Bizonyos 辿rz辿keny adatok (pl.: bankk叩rtya sz叩m) beviteli
mezj辿n辿l az autocomplete=off attrib炭tum haszn叩lata
Tuesday, April 3, 12
13. HTTP k辿r辿sek
n r叩s soha ne legyen GET
n L辿trehoz叩s, szerkeszt辿s az POST (form miatt), de a t旦rl辿s is
legyen az!
n Nem 叩rt, ha r叩k辿rdez端nk a felhaszn叩l坦ra t旦rl辿s eltt
(Drupalban: con鍖rm_form() f端ggv辿ny)
n Ha bejut valamilyen bot, akkor a linkeken v辿gigmegy
ha ez egy admin fel端let, akkor t旦r旦lheti az 旦sszes
tartalmat
Tuesday, April 3, 12
14. HTTP k辿r辿sek
n rz辿keny adatot URL-ben soha
n http://example.com/register.php?
username=foo&password=bar&mail=foobar@example.com
Tuesday, April 3, 12
15. JavaScript
n A JavaScript 叩ltal v辿gzett ellenrz辿s csak k辿nyelmi
szolg叩ltat叩s, minden ellenrz辿st el kell v辿gezni a szerver
oldalon is!
Tuesday, April 3, 12
16. JavaScript
n Val坦s 辿letbl vett ellenp辿lda:
<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
if (form.id.value=="buyers") {
if (form.pass.value=="gov1996") {
location="http://officers.federalsuppliers.com/agents.html"
} else {
alert("Invalid Password")
}
} else {
alert("Invalid UserID")
}
}
//-->
</script>
Tuesday, April 3, 12
17. File inclusion
n File-t SOHA nem include-olunk URL alapj叩n
n Trivi叩lis p辿lda:
http://example.com/index.php?p=../../../../etc/
passwd
http://example.com/index.php?p=index.php
Tuesday, April 3, 12
19. Alapok
n Soha, de soha ne ny炭ljunk a core k坦dhoz!
Tuesday, April 3, 12
20. Alapok
n Haszn叩ljuk a Drupal f端ggv辿nyeit 辿s API-jait
n N叩lunk tapasztaltabb emberek 鱈rt叩k
n K旦nny撤 megtanulni ket
n Hossz炭 t叩von 炭gyis gyorsabban v辿gezz端k el a
feladatainkat
Tuesday, April 3, 12
21. Alapok
n Minim叩lis jogosults叩gok mindenkinek
n A k旦vetkez jogosults叩gok megad叩s叩val odaadjuk a
siteunkat:
n Administer content types
n Administer users
n Administer permissions
n Administer 鍖lters
n Administer site con鍖guration
Tuesday, April 3, 12
22. Input formats
n Amit csak nagyon megb鱈zhat坦 felhaszn叩l坦knak enged端nk:
n Full HTML
n PHP
Tuesday, April 3, 12
23. Access control
n Haszn叩ld:
n node_access
n user_access
n hook_menu
Tuesday, April 3, 12
24. hook_menu()
n 'access callback'
n ezzel a f端ggv辿nnyel ellenrzi a Drupal, hogy az
adott felhaszn叩l坦 jogosult-e az oldal megn辿z辿s辿re
n alap辿rtelmezett 辿rt辿k: user_access
n 'access arguments'
n egy t旦mb, ami param辿terk辿nt ad坦dik 叩t
n user_access eset辿n el辿g egy elem, a jogosults叩g
neve
Tuesday, April 3, 12
25. hook_menu()
n
Rossz p辿lda:
function hook_menu() {
return array(
'foobar' => array(
'access callback' => TRUE,
),
);
}
Tuesday, April 3, 12
26. hook_menu()
n M辿g egy rossz p辿lda
function hook_menu() {
return array('foobar' => array(
'access callback' => user_access('some
permission'),
));
}
Tuesday, April 3, 12
27. hook_menu()
n
J坦 p辿lda
function hook_perm() { return array('do sg with my module'); }
function hook_menu() {
return array( 'foobar' => array(
'access arguments' => array('do sg with my module'),
));
}
Tuesday, April 3, 12
28. Valamit csin叩lni akarunk egy m叩sik user
nev辿ben
n
Rossz p辿lda
global $user;
$user = user_load(1);
n
Rossz p辿lda
global $user;
...
$user->uid = 1;
Tuesday, April 3, 12
29. Valamit csin叩lni akarunk egy m叩sik user
nev辿ben
n J坦 p辿lda
global $user;
drupal_save_session(FALSE);
$user = user_load(1);
n Ha nem musz叩j a jelenlegi userre hivatkozni, akkor ne
haszn叩ljuk az user v叩ltoz坦t
Tuesday, April 3, 12
30. SQL injection
n Nem megfelelen kezelt
sztring beilleszt辿se SQL
lek辿r辿sbe
n Mindig kritikus hiba
Tuesday, April 3, 12
31. SQL injection
n mysqli_query(SELECT * FROM node WHERE nid =
. $_GET['nid']);
n Ez ilyeszt
Tuesday, April 3, 12
32. SQL injection
n mysqli_query(SELECT * FROM node WHERE nid =
. $_REQUEST['nid']);
n Ez m辿g ilyesztbb
Tuesday, April 3, 12
33. SQL injection
n mysqli_query($_REQUEST['searchQuery']);
n Ez tal叩n a legr辿mesebb.
n Van ilyen: Google inurl:SELECT inurl:FROM inurl:WHERE
Tuesday, April 3, 12
34. SQL injection
n Nem SQL injection, de sok kezd fejleszt beleszalad
n SELECT * FROM user WHERE name LIKE '%
$username%'
Tuesday, April 3, 12
35. Felt旦lt旦tt f叩jlok
n Mindig ellenrizni:
n m辿ret
n kiterjeszt辿s
n felbont叩s (k辿pek eset辿n)
n 鍖le_check_location()
n Lehetleg soha ne include-oljunk felhaszn叩l坦 叩ltal felt旦lt旦tt
f叩jlt
Tuesday, April 3, 12
36. CSRF
<img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/http:/drupal.org/logout/>
Tuesday, April 3, 12
37. CSRF
n Cross-site request forgery
Tuesday, April 3, 12
38. 珂艶乙艶鉛噛辿壊
n
Ahol lehet, ott form api-t haszn叩lni
n
token haszn叩lata
n
hozz叩ad叩s:
$token = drupal_get_token('foo');
l($text, some/path/$token);
n
ellenrz辿s:
function my_page_callback($args, $token) {
if(!drupal_valid_token($token, 'foo'))
drupal_access_denied();
else {
...
}
}
Tuesday, April 3, 12
39. XSS
n Cross site scripting
Tuesday, April 3, 12
40. XSS p辿lda
n Node c鱈mek list叩z叩sa saj叩t theme f端ggv辿nnyel:
$output = '<li>' . $node->title . '</li>';
return $output;
n Mi van, ha a node c鱈me a k旦vetkez?
'<script>alert(U R H4XXD LULZ);
</script>'
Tuesday, April 3, 12
41. XSS
n Nem csak vicces dial坦gusok feldob叩l叩sra val坦
n B叩rmit megtehet端nk, amit az adott bejelentkezett
felhaszn叩l坦 megtehet.
Tuesday, April 3, 12
43. 閣辿糸艶一艶噛辿壊
n Csak escape-elni kell
n htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
n de nem szabad elfelejteni
n nem kellene t旦bbsz旦r megcsin叩lni
n abban a sz旦vegben sem lesz markup, ahol kellene
lennie
Tuesday, April 3, 12
44. 永姻看恢鉛辿馨叩一
n A k旦rnyezet m叩s 辿rtelmet ad a jeleknek
I CAN HAZ <b>CHEEZBURGER</b> LULZ!
<b> is not deprecated
<span attribute=$foo>$bar</span>
Tuesday, April 3, 12
45. 珂艶乙看鉛糸叩壊看一
n check_plain()
n check_markup()
n check_url()
n 鍖l岳艶姻喝恰壊壊()
n t()
Tuesday, April 3, 12
46. check_plain()
n plain text k旦rnyezet:
<b> is not deprecated
n html k旦rnyezet:
<b> is not deprecated
Tuesday, April 3, 12
47. check_markup()
n Rich text k旦rnyezet
[#8] foobar n baz
n HTML k旦rnyezet
<p> <a href=http://drupal.org/node/8> node/8
</a> foobar <br /> baz </p>
Tuesday, April 3, 12
48. check_url()
n URL k旦rnyezet
http://asdf.com/?foo=42&bar=baz
n HTML k旦rnyezet
http://asdf.com/?foo=42&bar=baz
Tuesday, April 3, 12
49. 鍖l岳艶姻喝恰壊壊()
n Felhaszn叩l坦 叩ltal adott HTML
<p>foo</p><script>alert('bar');</script>
n Biztons叩gos HTML
<p>foo</p>alert('bar');
Tuesday, April 3, 12
50. 鍖l岳艶姻喝恰壊壊()
n Felhaszn叩l坦 叩ltal adott HTML
<img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg onmouseover=... />
n Biztons叩gos HTML
<img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg />
Tuesday, April 3, 12
51. 鍖l岳艶姻喝恰壊壊()
n Felhaszn叩l坦 叩ltal adott HTML
<img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/javascript:doSomethingBad() />
n Biztons叩gos HTML
<img src=doSomethingBad() />
Tuesday, April 3, 12
52. Mi mit v叩r
n HTML n
Sima sz旦veg
n checkboxes #options n
select #options
n radios #options
n
l()
n l()
n drupal_set_title
n drupal_set_message
n watchdog
Tuesday, April 3, 12
53. Mi mit v叩r
n HTML
n site mission
n slogan
n footer
Tuesday, April 3, 12
54. Mi mit v叩r
n Sima sz旦veg
n termek
n felhaszn叩l坦nevek
n tartalomt鱈pusok
n node n辿v
Tuesday, April 3, 12
55. Mi mit v叩r
n Rich text
n comment body
n node body
Tuesday, April 3, 12
56. t()
n Plain text HTML
n t('@var', array('@var' => $plain_text));
n @: plain text
n t('%var', array('%var' => $plain_text));
n %: kiemelt sz旦veg
n HTML HTML
n t('!var', array('!var' => $html));
Tuesday, April 3, 12
57. .htaccess
n Nagyon fontos f叩jl!
n Ha nincs ott, akkor k旦nnyen okozhat sebezhets辿get
n pl.: directory listing + backup a settings.php-rl
Tuesday, April 3, 12
58. P辿ld叩k sebezhets辿gekre
n Webshopn叩l az 叩ru mennyis辿ge nem 1, hanem .1
n Webshop: 叩r elt叩rol叩sa hidden mezben, 叩t鱈rva 0-ra ingyen
lehet rendelni
Tuesday, April 3, 12
59. P辿ld叩k sebezhets辿gekre
n S端tiben felhaszn叩l坦n辿v vagy userid elt叩rol叩sa
n Sok oldaln叩l nyitvahagyj叩k a memcache portj叩t (11211),
鱈gy a cache-elt adatok k旦nnyed辿n manipul叩lhat坦k.
Tuesday, April 3, 12
60. Tov叩bbi olvasnival坦
n http://acko.net/blog/safe-string-theory-for-the-web
n http://drupal.org/writing-secure-code
n http://drupal.org/security-team
n http://owasp.org
n http://crackingdrupal.com
n http://api.drupal.org
Tuesday, April 3, 12
61. recruitment@pronovix.com
Belga-magyar c辿g
K旦z辿p-Eur坦pa egyik legjobb csapata
<15 f
Utaz叩s, csoki, s旦r
Tuesday, April 3, 12