SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler 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)	
  
	
  
	
  

Mais conteúdo relacionado

Semelhante a 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
 

Semelhante a 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
 

Último

"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtrahman018755
 
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac RoomVip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Roommeghakumariji156
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfJOHNBEBONYAP1
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样ayvbos
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsMonica Sydney
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查ydyuyu
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoilmeghakumariji156
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsMonica Sydney
 
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime BalliaBallia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Balliameghakumariji156
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制pxcywzqs
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查ydyuyu
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge GraphsEleniIlkou
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理F
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasDigicorns Technologies
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiMonica Sydney
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.krishnachandrapal52
 

Último (20)

"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac RoomVip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime BalliaBallia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 

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)