Sql injection

7 respostas
ATEN

Oi, pessoal,
Estou utilizando uma aplicação com jpa2.0 e hibernate, gostaria de saber se alguém sabe como se previnir de sql injection com essa configuração?
sei que com jdbc puro vc pode utilizar o PreparedStatement que ele faz o escape, mas em jpa e hibernate como fica isso???

7 Respostas

Hebert_Coelho

Do mesmo modo. Esse post pode te ajudar com isso: JPA Consultas e Dicas.

A classe query utiliza dos método setParameter.

ATEN

Interessante, obrigado pela resposta jakefrog, muito bom esse post mesmo.
Alívio da consciência!!! hehehe

Então a classe query junto com o metodo setParameter, não deixa que seja feito sql Injection,
poderia me explicar como isso funciona?
Gostaria de entender o mecanismo e como ele faz para evitar isso

[]s

Hebert_Coelho

http://software-security.sans.org/developer-how-to/fix-sql-injection-in-java-persistence-api-jpa

The above code snippets use parameter binding to set data. The JDBC driver will escape this data appropriately before the query is executed; making sure that data is used just as data.

Assuming data used in the above code snippets is user input, that has not been validated or escaped and it contains malicious database code (payload), the payload will be escaped appropriately by the JDBC driver (since parameterized queries are used), such that it would be used as data and not as code.

ATEN

Ótimo artigo, entendi um pouco melhor.

Bom eu estou trabalhando com jsf2.0 também e gostaria de saber se há algum jeito de deixar a url criptografada quando submetemos ao servidor a requisição

exemplo:

www.endereço.com.br/index?valor=1

// Para algo do tipo

www.endereço.com.br/index?XXXXXXX
Hebert_Coelho
ATEN:
Ótimo artigo, entendi um pouco melhor.

Bom eu estou trabalhando com jsf2.0 também e gostaria de saber se há algum jeito de deixar a url criptografada quando submetemos ao servidor a requisição

exemplo:
www.endereço.com.br/index?valor=1

// Para algo do tipo

www.endereço.com.br/index?XXXXXXX
Você poderia criar sua própria criptografia. Poderia ser valor=@#*(*&(*&LSJSDLKAJSD

e na página você trataria esse valor.

Desconheço um modo automático de se fazer isso.

ATEN

Por exemplo, eu tenho esse código, que vai a página InfoID.jsf
Como eu poderia colocar o parametro id encriptografado na url, como www.site.com.br/InfoID.jsf?XXXXX
Sabe de algum método que faça isso?

<h:form prependId="false">
  	<h:outputLink  value="InfoID.jsf" target="_blank">Informação 
		<f:param name="ID" id="ID" value="#{Usuario.id}" /> 
       </h:outputLink> 
</h:form>
Hebert_Coelho
ATEN:
Por exemplo, eu tenho esse código, que vai a página InfoID.jsf Como eu poderia colocar o parametro id encriptografado na url, como www.site.com.br/InfoID.jsf?XXXXX Sabe de algum método que faça isso?
<h:form prependId="false">
  	<h:outputLink  value="InfoID.jsf" target="_blank">Informação 
		<f:param name="ID" id="ID" value="#{Usuario.id}" /> 
       </h:outputLink> 
</h:form>
Você pode utilizar alguma criptografia pronta que acha na net. Não tenho nada pronto.

Para enviar e receber um parâmetro via get no JSF você pode ver como fazer aqui: JSF Parametros por Get Request RESTFull.

Criado 21 de maio de 2012
Ultima resposta 21 de mai. de 2012
Respostas 7
Participantes 2