Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Como impedir que dois IPs diferentes utilizem uma mesma sessão?
Em que sentido você diz usar uma mesma sessão?
Você já passou por alguma situação que possa descrever?
ou foi vítima de session mirror (sequestrar sessao)
Penso que se alguém roubar um Cookie e conseguir iniciar uma sessão com ele,
podem acontecer sérios danos, se for o caso de um painel de controle por exemplo.
Digamos que tenho um cookie chamado LOGIN_F4R2TY9;
Alguém consiga de alguma forma resgatá-lo e injetar de forma que se passe por uma sessão logada;
É possível que isso aconteça?
Existe alguma forma que ao logar o sistema diga:
Pare!
Esta session não suporta dois IPs diferentes logados simultaneamente.
Você não tem permissão para continuar.
Eu nao entendo bem como esse tipo de ataque poderia ser feito, estou estudando,
mas vocês poderiam me dar uma luz?
Vocês conseguiram me entender?
Ou eu estou viajando demais?
Alguém poderia participar pelo menos encerrando o tópico?
Você nunca terá uma sessão com dois ips diferentes. A cada sessão é criado um ID.
O que pode acontecer é você ter duas sessões com ips diferentes mas valores iguais. Por exemplo, eu logo com meu usuario e é gravado meu código. Você loga com meu usuário e será gravado o meu código também. Teremos duas pessoas navegando com o mesmo usuário. Isso você pode controlar criando um log no banco de dados e verificando quantos ips estão logado ao mesmo tempo com o mesmo usuário.
É o conteúdo da sessão ou cookie que faz a diferença. Nunca ouvi casos de ataques usando a mesma sessão e nem li possibilidade de existir um ataque assim.
você pode fazer o mesmo esquema, tipo do msn, se logar e tentar logar novamente, tanto de outro micro(ip), recebe uma mensagem que estalogado, pra isso terá que usar bd e uma flag no bd indicando o logon...
bom, o que você pode fazer é criptografar duas vezez em base64, que axo que ajuda...
por exemplo, você tem "ola amigos", ela em base64 fika: b2xhIGFtaWdvcw==, e se você passar esse texto já codificado de novo para base64, fika: YjJ4aElHRnRhV2R2Y3c9PQ==
e isso será complicado para a pessoa descobrir, e depois para pegar o valor decriptado, é só decriptar duas vezez também!
aqui está um código em asp para encriptar/decriptar em Base64:
<%
' Functions to provide encoding/decoding of strings with Base64.
'
' Encoding: myEncodedString = base64_encode( inputString )
' Decoding: myDecodedString = base64_decode( encodedInputString )
'
' Programmed by Markus Hartsmar for ShameDesigns in 2002.
' Email me at: mark@shamedesigns.com
' Visit our website at: http://www.shamedesigns.com/
'
Dim Base64Chars
Base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
"abcdefghijklmnopqrstuvwxyz" & _
"0123456789" & _
"+/"
' Functions for encoding string to Base64
Public Function base64_encode( byVal strIn )
Dim c1, c2, c3, w1, w2, w3, w4, n, strOut
For n = 1 To Len( strIn ) Step 3
c1 = Asc( Mid( strIn, n, 1 ) )
c2 = Asc( Mid( strIn, n + 1, 1 ) + Chr(0) )
c3 = Asc( Mid( strIn, n + 2, 1 ) + Chr(0) )
w1 = Int( c1 / 4 ) : w2 = ( c1 And 3 ) * 16 + Int( c2 / 16 )
If Len( strIn ) >= n + 1 Then
w3 = ( c2 And 15 ) * 4 + Int( c3 / 64 )
Else
w3 = -1
End If
If Len( strIn ) >= n + 2 Then
w4 = c3 And 63
Else
w4 = -1
End If
strOut = strOut + mimeencode( w1 ) + mimeencode( w2 ) + _
mimeencode( w3 ) + mimeencode( w4 )
Next
base64_encode = strOut
End Function
Private Function mimeencode( byVal intIn )
If intIn >= 0 Then
mimeencode = Mid( Base64Chars, intIn + 1, 1 )
Else
mimeencode = ""
End If
End Function
' Function to decode string from Base64
Public Function base64_decode( byVal strIn )
Dim w1, w2, w3, w4, n, strOut
For n = 1 To Len( strIn ) Step 4
w1 = mimedecode( Mid( strIn, n, 1 ) )
w2 = mimedecode( Mid( strIn, n + 1, 1 ) )
w3 = mimedecode( Mid( strIn, n + 2, 1 ) )
w4 = mimedecode( Mid( strIn, n + 3, 1 ) )
If w2 >= 0 Then _
strOut = strOut + _
Chr( ( ( w1 * 4 + Int( w2 / 16 ) ) And 255 ) )
If w3 >= 0 Then _
strOut = strOut + _
Chr( ( ( w2 * 16 + Int( w3 / 4 ) ) And 255 ) )
If w4 >= 0 Then _
strOut = strOut + _
Chr( ( ( w3 * 64 + w4 ) And 255 ) )
Next
base64_decode = strOut
End Function
Private Function mimedecode( byVal strIn )
If Len( strIn ) = 0 Then
mimedecode = -1 : Exit Function
Else
mimedecode = InStr( Base64Chars, strIn ) - 1
End If
End Function
%>
exemplos de uso:
por exemplo, para codificar duas vezez a frase "ola amigos":
base64_encode(base64_encode("ola amigos"))
e para recuperar o valor:
base64_decode(base64_decode("YjJ4aElHRnRhV2R2Y3c9PQ=="))
Espero ter ajudado!
Obs.: vou colocar este código no Lab. de Scripts!