Growing Venture Solutions - GVS - drupalcamp colorado http://growingventuresolutions.com/taxonomy/term/103/0 en You should come to Drupalcamp Colorado June 11-12 2011 http://growingventuresolutions.com/blog/you-should-come-drupalcamp-colorado-june-11-12-2011 <p>Drupalcamp Colorado 2011, co-hosted with Commerce Camp, is shaping up to be another amazing event.</p> <p><a href="http://2011.drupalcampcolorado.org/"><img src="http://growingventuresolutions.com/gvsfiles/dc-colorado.png" alt="Drupalamp Colorado Yeti" /></a></p> <p>In 2010 we had 312 people registered, delicious breakfast and lunches, 2 parties, all for less than $50 in attendance fee. For 2011, we have all that and more. You may consider <a href="http://2011.drupalcampcolorado.org/register">registering</a> before reading the rest...but if you still need to be convinced:</p> <h3>Drupal Camp Colorado: An Amazing Value in 2011</h3> <p>Session submission is closed and session selection is under way, but BOFs will be managed online in the lovely <a href="http://usecod.com/">Conference Organizing Distribution</a> based BOF manager which was used for <a href="http://chicago2011.drupal.org/">Drupalcon Chicago</a> and is being enhanced as it <a href="http://drupal.org/node/1034482">makes it's way into COD</a>.</p> <p>And the <a href="http://2011.drupalcampcolorado.org/program/sessions/accepted">sessions accepted</a> are looking amazing. There's a good mix of the best-of Drupalcon Chicago combined with what will certainly become favorites at Drupalcon London.</p> <p>The content team has made sure that we cover all skill levels this year. Some particularly new user friendly options include:</p> <ul> <li><a href="http://2011.drupalcampcolorado.org/training">Pre-camp training</a> on Friday the 10th from Lullabot and Chapter 3 will give you a 1 day trip forward a few levels in your Drupal journey.</li> <li><a href="http://2011.drupalcampcolorado.org/sessions/getting-started-drupal">Getting started with Drupal</a> will show off the basics and fields. Follow that up with <a href="http://2011.drupalcampcolorado.org/sessions/introduction-views-drupal-7">Introduction to Views</a> and then <a href="http://2011.drupalcampcolorado.org/sessions/how-setup-drupal-development-environment-windows">Setting up a Drupal Development Environment on Windows</a> before heading off to <a href="http://2011.drupalcampcolorado.org/sessions/introduction-drupal-theming">Introduction to Theming</a> and <a href="http://2011.drupalcampcolorado.org/sessions/introduction-module-development">Introduction to Module Development</a>. That takes a solid programmer from newbie to rockstar in a day!</li> </ul> <p>And if you're looking for <strong>socializing</strong> then there are both formal and informal activities to keep you busy. Friday and Saturday nights we'll have official parties at nearby venues with subsidized refreshments.</p> <h3>Amazing Attendees for Drupal Camp Colorado 2011</h3> <p>For 2011 we currently have 185 attendees registered about a month before the camp begins and we have space for up to 500. Among the people planning to come are:</p> <ul> <li>Approximately 25 total <a href="http://growingventuresolutions.com/blog/contributors-drupal-7-final-numbers">Drupal 7 core contributors</a> will be at the camp including some amazingly profilic ones like Damien Tournoud, Károly Négyesi (chx), Dave Reid, Larry Garfield, Bojhan, Nathan Haug (quicksketch) and Randy Fay who combined were responsible for approximately 13% of the code changes in Drupal 7. These are the people who are largely responsible for the new Database API, Image handling in core, automated testing and CCK in core among many other things.</li> <li>Amazing Drupal contributed module maintainers like Earl Miles (merlinofchaos) of Views, Panels, and Nodequeue fame (Nodeque being co-maintained by GVS team member Ezra Barnett Gildesgame).</li> <li>Nathan Haug who maintained many of the image related modules in Drupal 6 and who maintains the Webform, Flag and Fivestar modules (Fivestar being co-maintained by GVS team member Ezra Barnett Gildesgame).</li> <li>Ryan Szrama of Ubercart/Commerce fame who will be here for a whole week in advance of the camp working with the broader <a href="http://www.commerceguys.com/resources/news/drupal-commerce-beta3-released">Drupal Commerce team for a sprint</a>. </li> <li>Dave Reid, who along with me, helps maintain the Pathauto and Token modules. Dave also maintains Path Redirect and about 100 modules total!</li> <li>A few Drupal 8 <a href="http://drupal.org/community-initiatives/drupal-core">initiative owners</a> will be using this as a time for a sprint. Greg Dunlap, David Strauss, and Earl Miles are planning to attend and work on configuration management. Larry Garfield will be there to work on Web services/Context.</li> <li>From Aten Design Group we have Scott Reynen who has been tearing up the <a href="http://drupal.org/project/issues/search/projectapplications?text=&amp;assigned=&amp;submitted=&amp;participant=sreynen&amp;status[]=Open&amp;issue_tags_op=or&amp;issue_tags=">project application queue</a>, Ken Woodworth who is primarily responsible for the amazing <a href="http://denver2012.drupal.org/">Drupalcon Denver</a> design work.</li> <li>TopNotchThemes will be here with Steph, Chris, and Sheena bringing their usual fun and solid theming skills.</li> </ul> <p>If you ever wanted a time to chat with these folks without fighting with 3,000 other people for their attention, Denver is that time.</p> <p>Sold? Great: <a href="http://2011.drupalcampcolorado.org/register">Register now</a>!</p> http://growingventuresolutions.com/blog/you-should-come-drupalcamp-colorado-june-11-12-2011#comments Planet Drupal DrupalCamp drupalcamp colorado Mon, 16 May 2011 23:25:23 +0000 Greg 1337 at http://growingventuresolutions.com Drupal Security? http://growingventuresolutions.com/blog/drupal-security <p>Check the <a href="http://growingventuresolutions.com/node/104/s5">presentation formatted version</a> of this page.</p> <h3 class="s5-author">Greg Knaddison</h3> <p><a href="http://growingventuresolutions.com">Growing Venture Solutions</a></p> <p>2008/07/27 14:00</p> <p class="s5-location">DrupalCamp Colorado</p> <ul> <li>Why?</li> <li>What?</li> <li>Config?</li> <li>Coding?</li> <li>Process</li> <li>Q (hopefully A)</li> </ul> <p>Why bother</p> <ul> <li>Who has had a site cracked?</li> <li>Who has had a server cracked?</li> <li>More popularity brings more eyes reviewing code - brings more desire to crack and build worms</li> </ul> <p>Authentication</p> <ul> <li>Verifying digital identity of user</li> <li>Brute Force - guessing passwords</li> <li>Insufficient Authentication - only ask for email instead of email plus password</li> </ul> <p>Authorization</p> <ul> <li>Checking permissions of an authenticated user</li> <li>Insufficient Authorization - permission is too lose</li> </ul> <p>Client-side attacks</p> <ul> <li>Cross site scripting - XSS</li> <li>Cross site request forgery - CSRF</li> </ul> <p>Command Execution</p> <ul> <li>Operating System Command Injection (requires something from contrib)</li> <li>SQL Injection</li> </ul> <p><a href="http://xkcd.com/327/"></a></p> <p>Information Disclosure</p> <ul> <li>Information Leakage</li> <li>Directory Indexing</li> <li>Predictable Resource Location</li> </ul> <p><code>if (typeof jQuery == 'function') {<br /> jQuery.get('/user/1/edit',<br /> function (data, status) {<br /> if (status == 'success') {<br /> var matches = data.match(/id="edit-user-edit-form-token" value="([a-z0-9]*)"/);<br /> var token = matches[1];<br /> var payload = {<br /> "form_id": 'user_edit',<br /> "form_token": token,<br /> "pass[pass1]": 'hacked',<br /> "pass[pass2]": 'hacked'<br /> };<br /> jQuery.post('/user/1/edit', payload);<br /> }<br /> }<br /> );}<br /> </code></p> <p><a href="http://heine.familiedeelstra.com/node/1102]">From Heine</a></p> <p>Prioritize<br /> (Risk * Exposure) ^ 2 = Use Common Sense </p> <p>Secure Configurations<br /> Drupal permissions - "be careful - test"<br /> Input formats - <a href="http://drupal.org/node/224921">http://drupal.org/node/224921</a><br /> File permissions - <a href="http://drupal.org/node/117054">http://drupal.org/node/117054</a><br /> PHP Filter - don't use it </p> <p>Be a Secure User</p> <ul> <li>Use a good, unique password</li> <li>Beware unencrypted WiFi</li> <li>Use ssh/keys instead of FTP</li> <li>Be careful with UID 1</li> </ul> <p>Security related modules<br /> <a href="http://drupal.org/project/phpass">http://drupal.org/project/phpass</a><br /> <a href="http://drupal.org/project/single_login">http://drupal.org/project/single&#95;login</a><br /> <a href="http://drupal.org/project/httpbl">http://drupal.org/project/httpbl</a><br /> <a href="http://drupal.org/project/paranoia">http://drupal.org/project/paranoia</a><br /> <a href="http://drupal.org/project/password_policy">http://drupal.org/project/password&#95;policy</a> or <a href="http://drupal.org/project/password_strength">http://drupal.org/project/password&#95;strength</a><br /> <a href="http://drupal.org/project/persistent_login">http://drupal.org/project/persistent&#95;login</a><br /> <a href="http://drupal.org/project/phpids">http://drupal.org/project/phpids</a></p> <p>Writing Secure Code<br /> Use the APIs luke.</p> <p>FAPI</p> <p>Ensures form selections were provided to user<br /> Protects against CSRF</p> <ul> <li>NO: &lt;FORM ACTION=""&gt;</li> <li>YES: drupal&#95;get&#95;form($form&#95;array);</li> <li><a href="http://api.drupal.org/api/file/developer/topics/forms_api.html/6">Forms API Introduction</a></li> <li><a href="http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/6">Forms API Reference</a></li> <li><a href="http://drupal.org/node/37775">Forms API Diagram</a> </li> </ul> <p>t()<br /> Protects against XSS</p> <ul> <li>SAFE: t('I escape %user&#95;data', array('%user&#95;data' =&gt; $data)); <ul> <li>I escape <em>user&#95;data</em> (safe)</li> </ul> </li> <li>SAFE: t('I escape @user&#95;data', array('@user&#95;data' =&gt; $data)); <ul> <li>I escape user&#95;data</li> </ul> </li> <li>XSS vulnerability: t('I do not escape !user&#95;data', array('!user&#95;data' =&gt; $data)); <ul> <li>I do not escape user&#95;data</li> </ul> </li> </ul> <p>check_plain(), filter_xss()</p> <ul> <li>NO: print $user&#95;data;</li> <li> <p>YES: print check&#95;plain($user&#95;data);</p> </li> <li> <p>check&#95;plain - to be used when inserting plain text in HTML</p> </li> <li>check&#95;markup - to be used when inserting rich text in HTML</li> <li>filter&#95;xss - to remove all but whitelisted tags from text inserted in HTML</li> <li>filter&#95;xss&#95;admin - shortcut to filter&#95;xss with a permissive tag list, used to output admin defined texts.</li> </ul> <p>drupal_render()</p> <ul> <li>NO:<br /> $node = node&#95;load($nid);<br /> print $node-&gt;body;</li> <li>YES:<br /> $node = node&#95;load($nid);<br /> print node&#95;view($node);</li> </ul> <p>content_format()</p> <ul> <li>NO:<br /> print $node-&gt;field&#95;content&#95;something[0]['value'];</li> <li>YES:<br /> print content&#95;format('field&#95;content&#95;something', $node-&gt;field&#95;content&#95;something, $formatter = 'default', $node = NULL);</li> </ul> <p>db_query()</p> <ul> <li>NO:<br /> db&#95;query(“SELECT * FROM {table} WHERE someval = ‘$user&#95;input’”);</li> <li>YES:<br /> db&#95;query(“SELECT * FROM {table} WHERE someval = ‘%s’”, $user&#95;input);</li> </ul> <p>db_rewrite_sql()</p> <ul> <li>NO:<br /> db&#95;query(“SELECT * FROM {node}”);</li> <li>YES:<br /> db&#95;query(db&#95;rewrite&#95;sql((“SELECT * FROM {node}”));</li> </ul> <p>Proper use of these functions will solve the most common issues.</p> <p>See <a href="http://drupal.org/writing-secure-code">http://drupal.org/writing-secure-code</a> for more information.</p> <p>When in doubt, ask.</p> <p>Goals and Processes</p> <ol> <li>Protect Drupal sites secure from Zero Day exploits <ol> <li>Be really quiet, then really loud</li> </ol> </li> <li>Promote security practices in core and contrib <ol> <li>Make defaults and "proper" use of APIs secure</li> <li>Provide docs and examples</li> </ol> </li> <li>Facilitate fixes for contrib (not scanning, necessarily) <ol> <li>Intake of reports, pass information along, provide guidance, make announcements</li> </ol> </li> </ol> <p>Report a Problem</p> <ul> <li>Contact form or security@d.o</li> <li><a href="http://drupal.org/node/101494">Report a security issue guide</a></li> <li><a href="http://drupal.org/node/213320">Report a cracked site guide</a></li> </ul> <p>Contrib Module Workflow</p> <ul> <li>Issue gets reported (keep it quiet)</li> <li>Security team works with maintainer to get a fix</li> <li>Fix is released in next bundle of fixes (be loud)</li> </ul> <p>Policies:<br /> Cover core and contrib under basically the same process<br /> Only create SAs if:</p> <ul> <li>Module has a stable release</li> <li>Or, it has a developer release but is very popular</li> </ul> <p>Only current and last version are supported. This could be changed if enough volunteers stepped forward, but that has proven unlikely so far.</p> <p>Q?</p> <p>A (hopefully)</p> http://growingventuresolutions.com/blog/drupal-security#comments Planet Drupal drupal drupalcamp colorado security Wed, 05 Mar 2008 15:37:37 +0000 Greg 104 at http://growingventuresolutions.com