Software Carpentry logo

Security

April 24, 2010: We are pleased to announce that Version 4 of this course is now under development. For updates and an early peek at the content, please check out the Software Carpentry blog at http://www.software-carpentry.org/blog/.

1) Evil Exists

2) You Can Skip This Lecture If...

3) What Are We Trying to Do?

4) Technology Alone Is Not A Solution

5) More Ways Security Can Fail

6) How to Think About Security

7) Risk Assessment

8) Thinking Like A Villain

9) Example: Don't Trust Your Input

10) Attacking URLs

11) Leaking Information

12) SQL Injection

# marker:vdots
form = cgi.FieldStorage()
test_id = form.getvalue('testid')

query = "SELECT date,result FROM Results WHERE (id=%s)" % test_id

cursor = connection.cursor()
cursor.execute(query)
results = cursor.fetchall();
cursor.close();
# marker:vdots

13) Attacking Defaults and Denial of Service

14) Phishing

15) Attacking Data Entry

16) Timed Attacks

def read_file(filename, required_uid):
    '''Read submission data from a file, checking that the file
    is owned by the specified user.'''
    owner = os.stat(filename)[ST_UID]
    if owner != required_uid:
        raise SecurityException('%s has incorrect owner' % filename)
    stream = open(filename, 'r')
    data = stream.read()
    stream.close()
    return data

17) Securing HTTP

18) Cryptography 101

19) Public-Key Cryptography

20) Sending and Receiving

Secure Communication with Asymmetric Keys

Figure 35.1: Secure Communication with Asymmetric Keys

21) Digital Signatures

22) Securing Login

23) Red Queen Race

24) It Isn't Just The Web

25) Summary