SlideShare a Scribd company logo
1 of 51
Download to read offline
Secure	
  Drupal	
  Development	
  
Steven	
  Van	
  den	
  Hout	
  
@stevenvdhout
http://dgo.to/@svdhout
Steven Van den Hout
IS DRUPAL SECURE?
1
MANY EYES MAKE FOR SECURE CODE
IS OPEN SOURCE SECURE?
-  Security by obscurity
-  Open code does not make it easier for hackers
-  Open Source makes people look at it
-  Popularity gets more eyes and more peer-reviews
•  Bad open-source software as bad
•  as bad private software.
VULNERABILITIES
OWASP
-  Injection
-  Cross Site Scripting - XSS
-  Broken Authentication and Session Management
-  Cross Site Request Forgery - CSRF
-  Security Misconfguration
-  Failure to Restrict URL Access	
  
-  Access bypas
REPORTED VULNERABILITIES
IS DRUPAL SECURE?
-  Safe by design (Core and API)
-  Security Team
-  Highly organised
-  Documented process for Security Advisories and Updates
-  Thousands of maintainers, users and experts
-  Support: Drupal 6/7, Core & Contributed Modules
KEEP YOUR 
DRUPAL WEBSITE
SECURE
2
SECURITY IS A PROCESS 
NOT AN EVENT
•  FROM REPORTED ISSUE TO SECURITY UPDATE
A DRUPAL SECURITY RELEASE
YOU’RE SAFE UNTIL RELEASE SECURITY UPDATE
PRIVATE DISCLOSURE
UPDATES	
  
Always stay up to date
-  Keep up with latest security releases
Update Workflow
-  Hacked module + diff
-  Drush up
KNOW WHEN AN UPDATE IS NEEDED
UPDATE MANAGER
INSIGHT INTO HEALTH OF YOUR DRUPAL WEBSITE
STATUS MONITORING
Tools
-  Droptor.com (https://drupal.org/project/droptor)
-  Acquia Insight (https://drupal.org/project/
acquia_connector)
-  Nagios (https://drupal.org/project/nagios)
-  Drupalmonitor.com (https://drupal.org/project/
drupalmonitor)
-  …
BUILD A SECURE
DRUPAL WEBSITE
3
CONTRIBUTED
MODULES
CONTRIBUTED MODULES
Quality assurance
-  Usage
-  Number of open issues
-  Closed/Open ratio
-  Response time
	
  
Good quality usually means good security	
  
	
  
Manual code reviews for less used modules	
  
	
  
	
  
UPDATES	
  
Always stay up to date
-  Keep up with latest security releases
Update Workflow
-  Hacked module + diff
-  Drush up
PATCHES	
  
Contrib patches	
  
Read the entire issue
	
  
	
  
Commit custom patches	
  
Help out	
  
Feedback from other users (maintainers)	
  
Patch might get commited	
  
	
  
	
  Patch management	
  
Move module to patched	
  
Create a patches.txt	
  
Keep patches	
  
	
  
	
  
CUSTOM
MODULES
SECURITY PYRAMID	
  
Menu & Node Access	
  
Form API	
  
DB API	
  
Theme	
  
	
  	
  	
  
HACKS
AND HOW TO PREVENT THEM
SQL INJECTION	
  
"SELECT * FROM user WHERE name = '$name'"	
  
	
  
"SELECT * FROM user WHERE name = 'Robert'; DROP TABLE students;'"	
  
	
  
	
  
h4p://xkcd.com/327/	
  
SQL INJECTION
	
  
Placeholders	
  
	
  
	
   db_query(“SELECT * FROM users WHERE name = :user”, array(':user' => $user);	
  
	
  
	
  
Dynamic Queries	
  
	
  
	
  
	
  
$query = db_select('user', 'u')	
  
->fields('u')	
  
->where('name', $user)	
  
->execute();	
  
XSS (cross site scripting)	
  
EXECUTING ABRITRARY JAVASCRIPT CODE ON THE PAGE
XSS (cross site scripting)	
  
User Input	
  
	
  
	
   Title	
  
Body	
  
Log message	
  
Url	
  
Post	
  
User-Agent	
  
Headers	
  
	
  
	
  
XSS (cross site scripting)	
  
Validate forms	
  
	
  
	
   User input should never contain javascript	
  
	
  
	
  
Form api	
  
	
  
	
  
	
  
Never use $_POST variables	
  
$form_state['values']	
  
	
  
Form caching	
  
XSS (cross site scripting)	
  
Input formats	
  
Never use full_html	
  
	
  
	
  
Filter Functions	
  
	
  
	
  
	
  
	
  
	
  
check_url()	
  
check_plain()	
  
check_markup()	
  
filter_xss()	
  
XSS (cross site scripting)	
  
h4p://drupalscout.com/knowledge-­‐base/drupal-­‐text-­‐filtering-­‐cheat-­‐sheet-­‐drupal-­‐6	
  
XSS (cross site scripting)	
  
Functions	
  
	
  
	
   t()	
  
	
  
l()
drupal_set_title()	
  
	
  
	
  
	
  
@var => plain text	
  
%var => plain text	
  
!var => full html!	
  
CSRF (cross site request forgery)	
  
Taking action without confirming intent	
  
	
  
	
  
<a href=”/delete/user/1”>Delete user 1</a>	
  
	
  
	
  
Image Tag	
  
	
  
	
  
	
  
<img src=”/delete/user/1”>	
  
A hacker posts a comment to the administrator.	
  
When the administrator views the image, user 1 gets deleted	
  
	
  
	
  
CSRF (cross site request forgery)	
  
Token (aka Nonce)	
  
	
  
	
  
ACCESS BYPASS	
  
VIEW CONTENT A USER IS NOT SUPPOSED TO
ACCESS BYPASS	
  
View content a user is not supposed to	
  
	
  
	
  
$query = db_select('node', 'n')->fields('n');	
  
Also shows nodes that user doesn't have acces to	
  
	
  
	
  
$query->addTag('node_access')	
  
	
  
	
  
	
  
Rewrite the query based on the node_access table	
  
ACCESS BYPASS	
  
Bad custom caching	
  
	
  
	
  
Administrator visits a block listing nodes.	
  
The block gets cached	
  
	
  
The cached block with all nodes is shown to the anonymous user	
  
	
  
Add role id to custom caching	
  
ACCESS BYPASS	
  
Rabbit_hole module	
  
	
  
	
  
Rabbit Hole is a module that adds the ability to control what should happen
when an entity is being viewed at its own page.
Page manager can do the same.	
  
Field access	
  
	
  
	
  
	
  
$form['#access'] = custom_access_callback();	
  
Menu access	
  
	
  
	
  
	
  
$item['access callback'] = 'custom_access_callback',	
  
CORRECT USE OF API	
  
Form API	
  
Validation
Form state
Drupal_valid_token
	
  
	
  DB API	
  
db_select, db_insert, placeholders	
  
$query->addTag(‘node_access’);	
  
	
  
	
  Filter	
  
check_url, check_plain, check_markup, filter_xss, …	
  
t(), l(), drupal_set_title(), …	
  
	
  
	
  
THEMES
THEMES	
  
Themer not responsible	
  
	
  
	
  Preprocess functions	
  
	
  
	
  
CONFIGURATION
PERMISSIONS
	
  
Permission management	
  
	
  
	
  If Joe from advertising can give the full html filter format to anonymous user,
don't bother to think about security	
  
	
  
	
  
Split up permissions	
  
	
  
	
  The default permissions don't cover every use case	
  
	
  
	
  
PERMISSIONS
	
  
FILTER FORMATS	
  
Never use full_html	
  
	
  
	
  
Use filtered_html instead.	
  
	
  
	
  
Never use phpfilter	
  
	
  
	
   Use a custom module for code	
  
Versioning	
  
Bad performance (eval)	
  
	
  
	
  
CHECKLIST
CHECKLIST	
  
Never use	
  
full_html
Php filter	
  
	
  
	
  
Permissions	
  
	
  
	
  
	
  
	
  
	
  
Trusted users only
Split up permissions
	
  
API
	
  
	
  
	
  
	
  
	
  
	
  
Preprocess functions
check_plain, filter_xss
DB API
Form API
Tokens
Menu/Node Access
	
  
GREAT	
  
HOW ABOUT DRUPAL 8?
FURTHER READING
FURTHER READING	
  
Books	
  
Cracking Drupal !!	
  
Pro Drupal Development
Online	
  
https://drupal.org/writing-secure-code	
  
https://drupal.org/node/360052	
  
http://munich2012.drupal.org/program/sessions/think-hacker-secure-drupal-code.html	
  
http://drupalscout.com/knowledge-base	
  
Video	
  
How to avoid All your base are belong to us (drupalcon Denver)	
  
	
  
	
  

More Related Content

Similar to Drupal campleuven: Secure Drupal Development

Drupal Security from Drupalcamp Bratislava
Drupal Security from Drupalcamp BratislavaDrupal Security from Drupalcamp Bratislava
Drupal Security from Drupalcamp BratislavaGábor Hojtsy
 
OWASP Top 10 vs Drupal - OWASP Benelux 2012
OWASP Top 10 vs Drupal - OWASP Benelux 2012OWASP Top 10 vs Drupal - OWASP Benelux 2012
OWASP Top 10 vs Drupal - OWASP Benelux 2012ZIONSECURITY
 
Drupal Security Seminar
Drupal Security SeminarDrupal Security Seminar
Drupal Security SeminarCalibrate
 
Doing Drupal security right
Doing Drupal security rightDoing Drupal security right
Doing Drupal security rightGábor Hojtsy
 
Drupal security
Drupal securityDrupal security
Drupal securityJozef Toth
 
Doing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon LondonDoing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon LondonGábor Hojtsy
 
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)cgmonroe
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by defaultSlawomir Jasek
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by defaultSecuRing
 
4 andrii kudiurov - web application security 101
4   andrii kudiurov - web application security 1014   andrii kudiurov - web application security 101
4 andrii kudiurov - web application security 101Ievgenii Katsan
 
Web Application Security in Rails
Web Application Security in RailsWeb Application Security in Rails
Web Application Security in RailsUri Nativ
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applicationsDevnology
 
DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...
 DDD17 - Web Applications Automated Security Testing in a Continuous Delivery... DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...
DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...Fedir RYKHTIK
 
Web Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or SucceedWeb Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or SucceedPrathan Phongthiproek
 

Similar to Drupal campleuven: Secure Drupal Development (20)

Drupal Security from Drupalcamp Bratislava
Drupal Security from Drupalcamp BratislavaDrupal Security from Drupalcamp Bratislava
Drupal Security from Drupalcamp Bratislava
 
OWASP Top 10 vs Drupal - OWASP Benelux 2012
OWASP Top 10 vs Drupal - OWASP Benelux 2012OWASP Top 10 vs Drupal - OWASP Benelux 2012
OWASP Top 10 vs Drupal - OWASP Benelux 2012
 
Drupal Security Seminar
Drupal Security SeminarDrupal Security Seminar
Drupal Security Seminar
 
Rails Security
Rails SecurityRails Security
Rails Security
 
Drupal Security Hardening
Drupal Security HardeningDrupal Security Hardening
Drupal Security Hardening
 
Drupal Security Hardening
Drupal Security HardeningDrupal Security Hardening
Drupal Security Hardening
 
Doing Drupal security right
Doing Drupal security rightDoing Drupal security right
Doing Drupal security right
 
Drupal security
Drupal securityDrupal security
Drupal security
 
Doing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon LondonDoing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon London
 
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by default
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by default
 
4 andrii kudiurov - web application security 101
4   andrii kudiurov - web application security 1014   andrii kudiurov - web application security 101
4 andrii kudiurov - web application security 101
 
Web Security 101
Web Security 101Web Security 101
Web Security 101
 
Web Application Security in Rails
Web Application Security in RailsWeb Application Security in Rails
Web Application Security in Rails
 
null Bangalore meet - Php Security
null Bangalore meet - Php Securitynull Bangalore meet - Php Security
null Bangalore meet - Php Security
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applications
 
PHP Secure Programming
PHP Secure ProgrammingPHP Secure Programming
PHP Secure Programming
 
DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...
 DDD17 - Web Applications Automated Security Testing in a Continuous Delivery... DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...
DDD17 - Web Applications Automated Security Testing in a Continuous Delivery...
 
Web Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or SucceedWeb Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or Succeed
 

Recently uploaded

𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 
SEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistSEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistKHM Anwar
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...sonatiwari757
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 

Recently uploaded (20)

Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
SEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistSEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization Specialist
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
 
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Noida 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In Noida 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 

Drupal campleuven: Secure Drupal Development

  • 1. Secure  Drupal  Development   Steven  Van  den  Hout  
  • 4. MANY EYES MAKE FOR SECURE CODE IS OPEN SOURCE SECURE? -  Security by obscurity -  Open code does not make it easier for hackers -  Open Source makes people look at it -  Popularity gets more eyes and more peer-reviews •  Bad open-source software as bad •  as bad private software.
  • 5. VULNERABILITIES OWASP -  Injection -  Cross Site Scripting - XSS -  Broken Authentication and Session Management -  Cross Site Request Forgery - CSRF -  Security Misconfguration -  Failure to Restrict URL Access   -  Access bypas
  • 7. IS DRUPAL SECURE? -  Safe by design (Core and API) -  Security Team -  Highly organised -  Documented process for Security Advisories and Updates -  Thousands of maintainers, users and experts -  Support: Drupal 6/7, Core & Contributed Modules
  • 8. KEEP YOUR DRUPAL WEBSITE SECURE 2
  • 9. SECURITY IS A PROCESS NOT AN EVENT
  • 10. •  FROM REPORTED ISSUE TO SECURITY UPDATE A DRUPAL SECURITY RELEASE
  • 11.
  • 12.
  • 13. YOU’RE SAFE UNTIL RELEASE SECURITY UPDATE PRIVATE DISCLOSURE
  • 14. UPDATES   Always stay up to date -  Keep up with latest security releases Update Workflow -  Hacked module + diff -  Drush up
  • 15. KNOW WHEN AN UPDATE IS NEEDED UPDATE MANAGER
  • 16. INSIGHT INTO HEALTH OF YOUR DRUPAL WEBSITE STATUS MONITORING Tools -  Droptor.com (https://drupal.org/project/droptor) -  Acquia Insight (https://drupal.org/project/ acquia_connector) -  Nagios (https://drupal.org/project/nagios) -  Drupalmonitor.com (https://drupal.org/project/ drupalmonitor) -  …
  • 17.
  • 20. CONTRIBUTED MODULES Quality assurance -  Usage -  Number of open issues -  Closed/Open ratio -  Response time   Good quality usually means good security     Manual code reviews for less used modules      
  • 21. UPDATES   Always stay up to date -  Keep up with latest security releases Update Workflow -  Hacked module + diff -  Drush up
  • 22. PATCHES   Contrib patches   Read the entire issue     Commit custom patches   Help out   Feedback from other users (maintainers)   Patch might get commited      Patch management   Move module to patched   Create a patches.txt   Keep patches      
  • 24. SECURITY PYRAMID   Menu & Node Access   Form API   DB API   Theme        
  • 25. HACKS AND HOW TO PREVENT THEM
  • 26. SQL INJECTION   "SELECT * FROM user WHERE name = '$name'"     "SELECT * FROM user WHERE name = 'Robert'; DROP TABLE students;'"       h4p://xkcd.com/327/  
  • 27. SQL INJECTION   Placeholders       db_query(“SELECT * FROM users WHERE name = :user”, array(':user' => $user);       Dynamic Queries         $query = db_select('user', 'u')   ->fields('u')   ->where('name', $user)   ->execute();  
  • 28. XSS (cross site scripting)   EXECUTING ABRITRARY JAVASCRIPT CODE ON THE PAGE
  • 29. XSS (cross site scripting)   User Input       Title   Body   Log message   Url   Post   User-Agent   Headers      
  • 30. XSS (cross site scripting)   Validate forms       User input should never contain javascript       Form api         Never use $_POST variables   $form_state['values']     Form caching  
  • 31. XSS (cross site scripting)   Input formats   Never use full_html       Filter Functions             check_url()   check_plain()   check_markup()   filter_xss()  
  • 32. XSS (cross site scripting)   h4p://drupalscout.com/knowledge-­‐base/drupal-­‐text-­‐filtering-­‐cheat-­‐sheet-­‐drupal-­‐6  
  • 33. XSS (cross site scripting)   Functions       t()     l() drupal_set_title()         @var => plain text   %var => plain text   !var => full html!  
  • 34. CSRF (cross site request forgery)   Taking action without confirming intent       <a href=”/delete/user/1”>Delete user 1</a>       Image Tag         <img src=”/delete/user/1”>   A hacker posts a comment to the administrator.   When the administrator views the image, user 1 gets deleted      
  • 35. CSRF (cross site request forgery)   Token (aka Nonce)      
  • 36. ACCESS BYPASS   VIEW CONTENT A USER IS NOT SUPPOSED TO
  • 37. ACCESS BYPASS   View content a user is not supposed to       $query = db_select('node', 'n')->fields('n');   Also shows nodes that user doesn't have acces to       $query->addTag('node_access')         Rewrite the query based on the node_access table  
  • 38. ACCESS BYPASS   Bad custom caching       Administrator visits a block listing nodes.   The block gets cached     The cached block with all nodes is shown to the anonymous user     Add role id to custom caching  
  • 39. ACCESS BYPASS   Rabbit_hole module       Rabbit Hole is a module that adds the ability to control what should happen when an entity is being viewed at its own page. Page manager can do the same.   Field access         $form['#access'] = custom_access_callback();   Menu access         $item['access callback'] = 'custom_access_callback',  
  • 40. CORRECT USE OF API   Form API   Validation Form state Drupal_valid_token    DB API   db_select, db_insert, placeholders   $query->addTag(‘node_access’);      Filter   check_url, check_plain, check_markup, filter_xss, …   t(), l(), drupal_set_title(), …      
  • 42. THEMES   Themer not responsible      Preprocess functions      
  • 44. PERMISSIONS   Permission management      If Joe from advertising can give the full html filter format to anonymous user, don't bother to think about security       Split up permissions      The default permissions don't cover every use case      
  • 46. FILTER FORMATS   Never use full_html       Use filtered_html instead.       Never use phpfilter       Use a custom module for code   Versioning   Bad performance (eval)      
  • 48. CHECKLIST   Never use   full_html Php filter       Permissions             Trusted users only Split up permissions   API             Preprocess functions check_plain, filter_xss DB API Form API Tokens Menu/Node Access  
  • 49. GREAT   HOW ABOUT DRUPAL 8?
  • 51. FURTHER READING   Books   Cracking Drupal !!   Pro Drupal Development Online   https://drupal.org/writing-secure-code   https://drupal.org/node/360052   http://munich2012.drupal.org/program/sessions/think-hacker-secure-drupal-code.html   http://drupalscout.com/knowledge-base   Video   How to avoid All your base are belong to us (drupalcon Denver)