×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Defensive Programming
Slide 2
Slide 2 text
Use a Framework
Slide 3
Slide 3 text
Don't Trust Users
Slide 4
Slide 4 text
Filter User Content
Slide 5
Slide 5 text
filter_var( $input, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE );
Slide 6
Slide 6 text
filter_var( $input, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE );
Slide 7
Slide 7 text
filter_var( $input, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE );
Slide 8
Slide 8 text
→ FILTER_VALIDATE_EMAIL → FILTER_VALIDATE_IP → FILTER_VALIDATE_REGEXP → FILTER_VALIDATE_URL
Slide 9
Slide 9 text
v::alnum() ->length(1,15) ->validate("PHP 6"); // true
Slide 10
Slide 10 text
→ https://php.net/manual/en/function.filter-var.php → https://php.net/manual/en/filter.filters.validate.php → https://github.com/respect/validation
Slide 11
Slide 11 text
Use Database Abstractions
Slide 12
Slide 12 text
→ http://www.doctrine-project.org/projects/orm.html → https://github.com/auraphp/Aura.Sql
Slide 13
Slide 13 text
Sanitise User Content
Slide 14
Slide 14 text
→ http://php.net/manual/en/function.strip-tags.php → http://php.net/manual/en/function.htmlentities.php
Slide 15
Slide 15 text
Don't Trust Developers
Slide 16
Slide 16 text
Write Tests
Slide 17
Slide 17 text
→ http://grumpy-learning.com
Slide 18
Slide 18 text
Follow SOLID Principles
Slide 19
Slide 19 text
Single Responsibility Principle
Slide 20
Slide 20 text
Open-Closed Principle
Slide 21
Slide 21 text
Liskov Substitution Principle
Slide 22
Slide 22 text
Interface Segregation Principle
Slide 23
Slide 23 text
Dependency Inversion Principle
Slide 24
Slide 24 text
→ https://cleancoders.com
Slide 25
Slide 25 text
Type-hint
Slide 26
Slide 26 text
function average(array $values = []) { return array_sum($values) / count($values); }
Slide 27
Slide 27 text
function print_script($src) { assert( is_string($src), "src is not a string" ); print ""; }
Slide 28
Slide 28 text
Thanks! → https://joind.in/13401 → https://twitter.com/assertchris