Presented by:
- Nick Moore
- Jackson Robbins
- Jose Elera
- Intro to Web Security
- Why web security is important?
- As Users
- Since computers took over information processing for humans, all your data is at risk if you don't follow simple easy-to-remember rules.
- Protecting your digital data is as important as other possessions.
- Being proactive is better than being blindly trusting.
- It is not fun to deal with Identity Theft.
- As Developers
- We have a responsibility to create safe-as-possible applications.
- While ideally they would have a security expert in your organization, it would be very beneficial for your career if you have a basic knowledge.
- While No app is 100% uncrackable, we can make it really hard for would-be evildoers.
- As Users
- Common Ways of password exploits
- User-oriented hacking
- Weak or short passwords
- User uses the same password across many, if not all, web services
- A user may find that
koala123
orGoCubs2016
are easy-to-remember passwords, but the crude reality is that They are so unsecure. - https://lastpass.com/howsecure.php
- https://howsecureismypassword.net/
- A user may find that
- User uses commonly used words (dictionary attack)
- User uses the same password across many, if not all, web services
- Outdated and unpatched software (OS, Web Browsers, other malware)
- User has a rudimentary, or none whatsoever, password management.
- "If you have to write down your password, you are doing it wrong"
- Weak or short passwords
- Frontend/Backend well-known cracking
- SQL Injection
- Outdated packages with known exploits
- Weak or improperly implemented encryption
- User-oriented hacking
- Web Security 101 for End Users
- Do not write down your password
- Do not use the same password for more than one site
- Change periodically your passwords
- Use a one-way-encryption Password manager
- Use a long and hard-to-guess master password, and do not forget it.
- Let it generate random character password for each website.
- LastPass, Dashlane, 1Password, KeePassX
- Use a Two-Factor Authentication (TFA) when possible (Google Authenticator, Authy)
- It may go without saying, but, Do not share your passwords, unless you are absolutely sure of the recipient.
- Web Security 101 for Frontend Development
- Frontend is the first barrier out of many for would-be hackers and clueless users.
- Do not rely on frontend safety, as it could easily be manipulated by enterprising users who, may or may not be, trying to look for security flaws.
- Frontend validation is mostly done by making sure the data the user inputted is the one needed by the backend.
- It could easily be turned off.
- Frequently audit your frontend code, look for unintended data leaks.
- Web Security 101 for Backend Development
- Get familiar with common security threats
- Cross-site scripting (XSS)
- SQL Injection
- Path Disclosure
- Denial-of-service attack (DDoS)
- Arbitrary code execution
- Cross-site Request Forgery
- Data breaches
- Arbitrary File Inclusion
- Buffer Overflow
- Code Injection
- Get familiar with common web app security risks
- Injection
- Broken Authentication
- Sensitive Data Exposure
- XML Enternal Entities (XXE)
- Broken Access Control
- Security Misconfiguration
- XSS
- Using components with known vulnerabilities
- Insufficient Logging and Monitoring
- Apply security checkpoints and techniques throughout the software development lifecycle.
- Be sure to only expose limited elements of your application.
- In most cases, whitelisting is better than blacklisting.
- When OOP
- Use private methods, as many as you can.
- Monitor and Audit your setter and getters.
- Avoid, at all costs, storing plain-text passwords
- Salt the plain-text password
- Each user password should have a different salt.
- Salting will make brute-force and dictionary attacks much slower.
- Without salting, a SQL injection attack is more likely to be successful.
- Do not reuse salt
- Do not let the salt be too short. -Salt
- If the user forget the password
- The user will have to authenticate in another way, in other to re-set the password.
- Do not send an email to the user with their actual password.
- This won't be able to happen because we won't be storing plain-text password.
- Salt the plain-text password
- There are a number of technical solutions to consider when designing, building and testing secure web applications
- Web Application Security Scanners
- Penetration Testing Software
- Static Source Code Analyzers
- Web Application Security Scanners (w3af)
- Web Application Firewalls
- Password Cracking Tools for testing password strength
- Keep up to date with the Open Web Application Security Project (OWASP)
- Get an audit from a security expert if possible.
- Get familiar with common security threats
- Safe Practices for Databases
- For the love of everything, Do not store plain-text passwords
- Conclusion
- The End