django Server Configuration - Basic Security Part 7 NB: This is the seventh post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. Configuring a server correctly is both 1) hard and 2) critical. You’ve probably spent a bunch of time configuring Apache [http://httpd.apache.org/] or nginx [http://nginx.org/
django Session Fixation and Hijacking - Basic Security Part 6 NB: This is the sixth post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. 1. Don’t put session IDs in the URL. Django explicitly does not support [https://docs.djangoproject.com/en/dev/topics/http/sessions/#session-ids-in-urls] this because it’s just dangerous.
access control Access Control - Basic Security Part 5 NB: This is the fifth post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. Proper access control is an absolutely key part of web app security and is easily overlooked—possibly because it’s so easy. In Django, to hide a link from someone,
django Injections, SQL and otherwise - Basic Security Part 4 NB: This is the fourth post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. SQL Injection SQL injection is a vector that lets a user insert their own SQL into a statement sent to your database server. The typical example is: 1. "SELECT
csrf CSRF: Cross-Site Request Forgeries - Basic Security Part 3 NB: This is the third post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. The quintessential example of a CSRF (sometimes pronounced “sea-surf”) is a bank that naively does transfers over a GET request without any other security: http://badbank.com/transfer?from=act1&
django XSS: Cross-Site Scripting - Basic Security Part 2 NB: This is the second post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. XSS covers a number of various attacks, but the common thread is that someone gets to execute code in the context of your web page and domain. Doing that, they
django Password Storage - Basic Security Part 1 NB-1: This is the first post in a series [https://www.coffeeonthekeyboard.com/best-basic-security-practices-especially-with-django-697/] of posts on web application security. NB-2: Fred [http://fredericiana.com/] wrote a great post on password storage [https://blog.mozilla.org/webdev/2012/06/08/lets-talk-about-password-storage/]. You should read it. I’m assuming we’re
django Best Basic Security Practices (Especially with Django) Or: Locking Your Doors This goes along with a talk I gave at Django-NYC [http://www.djangonyc.org/events/70626822/] in July 2012, but is meant to stand on its own. It is the first in a series of posts, because I realized it was too big for one. Security
django Putting My Slides Where My Mouth Is I’m giving a talk tonight [http://www.djangonyc.org/events/70626822/] at GetGlue [http://getglue.com/] on web app security, particularly with Django. Over the next several days—starting tonight—parts of that talk will be posted here as blog posts (I’ve realized there’s too much material
High MySQL CPU Load Today? Quick Fix If you started seeing a load spike in MySQLd (or apparently Java) processes this morning, it may be the fault of yesterday’s leap second. Apparently due to tides slowing the rotation of the earth [https://twitter.com/neiltyson/status/219042429653889026], there was an extra second added to 30 June
meetup Calling all Mozilla Community Members in New York! Are you a Mozillian? Are you an add-on author or web developer or an avid Firefox user? Do you think of yourself as part of the Mozilla Community, and are you in or around New York City? Then I’m talking to you! We have a Meetup group [http://www.
Code Where are James' Slides? I give a lot—well, I give some—talks, but I never give the slides out. And, as far as I can remember, no one has ever asked for them. I know people, people who speak a lot more than me [http://stevesouders.com/], who put all their slide decks
Code Why Django Sucks, Except When It Doesn't Ken Reitz [https://twitter.com/kennethreitz] is a smart man. Very smart. Smarter than me. He’s responsible for some of the best [https://github.com/kennethreitz/flask-sslify], most widely-used [https://crate.io/packages/requests/] Python libraries out there. So when he talks, I listen. And recently, he talked about
That's What He... is Sorry For Two recent blog posts have called me on my bullshit and I owe everyone an apology. First, Jessamyn Smith wrote about Fighting Sexist Jokes the Geeky Way [http://geekchick77.dreamwidth.org/472.html], and then Katie Cunningham—whom, though we’ve never met in person, I consider a friend from
Developing a Culture of Testing I say this all the time, but Mozilla’s webdev group has grown a lot [http://blog.mozilla.com/webdev/2011/08/08/pragmatic-growth-from-2-to-40-in-4-years/] over the past few years, and I don’t just mean in size. We’ve become better engineers, a better team, too. One key aspect of
Better A week or so ago, I needed to say that I wasn’t OK [https://www.coffeeonthekeyboard.com/not-ok-627/]. Thanks to everyone who offered support and kind words, and especially my cousin Jono who drank beer and talked about Star Wars and other things that don’t matter at all.
Not OK I’m not doing OK right now. Why is that so hard to admit? It’s nothing big, it’s just a hundred small things and they all happened at the same time and it feels like I can’t win right now. It feels like if 12 hours could
mozilla Performance is a Feature What do I mean when I say “performance is a feature?” For a long time, I got this wrong. When I explained myself, I’d say that performance was as important as any other feature and worth spending as much time on as any other feature, and you shouldn’t
apple Thank You, Steve Thank you, Steve [http://www.apple.com/stevejobs/]. I didn’t really realize until today exactly what I owe to Steve Jobs’ vision and dedication. So much of my life and career has been influenced and guided by an interest in screwing about with computers that goes back to the
developers So You Want Me to Hire You I vacillated quite a bit on the title of this post. It is, after all, not me that is hiring you. Nor do I have the power to hire folks at will: it’s a team decision. But I also don’t want to claim to speak for anyone else,
continuous deployment Acronyms you should know: MTTD and MTTR If you’re a SUMO [https://support.mozilla.com/] contributor, there are two acronyms you will start to hear more often from us developers: MTTD andMTTR. They mean “mean time to detect” and “mean time to resolve,” respectively, and they refer to how long it takes to detect an issue
Say hi to Scottbot UPDATE: Scottbot has been removed from GitHub and will not be coming back. Find out why [https://www.coffeeonthekeyboard.com/thats-what-he-is-sorry-for-651/]. After talking about it with Fred [http://fredericiana.com/] for a couple of weeks, I sat down this morning and started scottbot, an IRC bot that will learn how
damnproud Pride and Joy: Firefox 4 is Out! Since it was officially released around 7 hours ago, Firefox 4 [http://www.mozilla.com/] has been downloaded nearly 2.4 million times [http://glow.mozilla.org/]. I feel many things today. I’m deeply proud and humbled to be a part of the Mozilla community and contribute in my
api The Thing About Twitter The thing that bothers me most about Twitter’s API announcement [http://groups.google.com/group/twitter-api-announce/browse_thread/thread/c82cd59c7a87216a?pli=1] is that very few of the most useful features of Twitter were actually their ideas. * Hashtags. * Retweets. * Location. * Search. * Lists. * Conversation view. * Inline images and links. * Short
continuous deployment A brief SumoDev update A little while ago [https://www.coffeeonthekeyboard.com/sumo-in-q2-563/], I said that I thought we got a B in Q1, but we could move up to an A with a little more work. (This is my favorite grading system: everyone starts at 0 and works up.) Well, we landed two