Security
All Input is Evil (Part 1)
Introduction Will not cover everything Healthy level of paranoia Use my DVD Swap Shop application (week 2)
http://www. theguardian http://www.theguardian.com/technology/2015/aug/19/ashley-madison-hackers-release-10gb-database-of-33m-infidelity-site-accounts
Security Considerations Authentication Authorisation Secure communication Software + Hardware
The Login Provides authentication asterisks ********* SQL injection attack
Human Problems A simple conversation People use words they can remember Same passwords for many sites Doctor who fan guess the password T****S
Dictionary Attacks If you know a user name throw the dictionary at it
Brute Force Attack If the password is CC but all we know is that it is two characters long ** AA AB BA BB BC CB CC The longer the password the more time we need to crack it.
Countermeasures Education Enforce rules in code Don’t use same password for all sites Avoid passwords that could be guessed Don’t use dictionary words Enforce rules in code Minimum password length Non alpha numeric characters Expiration date Limit login attempts
Use a Security Framework Authentication options in .NET Windows Passport Forms DIY
Securing Stored Passwords Unsecured Access database Stored in App_Data folder (Could store on another drive/machine) Plain text password stored in the table
Password Hashing .NET Cryptography Encryption is ok Hashing better IKSV2XlTzgf7LFJNFuHDkf9f4WQPZPLnEIY= Do not store the password in plain text
Adding Salt If the passwords for John and Fred without salt look like this... John IKSV2XlTzgf7LFJNFuHDkf9f4WQPZPLnEIY= Fred IKSV2XlTzgf7LFJNFuHDkf9f4WQPZPLnEIY= Adding salt would change the hash values like so... John 354rlrk8Jv7729qVOrOp0lXUv7RAsdV Fred 9Wo0irC6+ylay0CJsLVtWBfbJBSn03j4gzhG Concatenate password + email address
Validation Who do you trust? Do you trust me not to make use of that data in some way? Do you trust me to write a web application that will not be compromised in any way? Not just a matter of what people you trust but what systems do you trust? Exclude list = characters we don’t allow Include list = characters we do allow
Code Injection Script could run when page is rendered elsewhere in application IIS automatically disallows this
Turn Off Debug Mode By entering bad data a hacker could crash your program
We now Know The language of the application (VB.NET) The names of several parameters SwapTitle Description etc.. In the light of the above probably the names of some fields in the database (this way the hacker may refine the SQL injection attacks.) The remote path on the server C:\MyFiles\IMAT1604\content\Widget Swap\Widget Swap\aswap.aspx.vb
Securing the Communication Channel
Public and Private Keys
Public and Private Keys
Secure Socket Layer (SSL) The browser makes a secure HTTP request HTTPS on port 443 The server sends back a digital certificate verifying its credentials The client verifies the certificate with the issuing agency Using the public key the data is encrypted between client and server
Open Ports Port scanners Firewalls IP Filtering Turn off unused services Grant Minimum Permissions to Resources