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???
Sql injection
7 Respostas
Do mesmo modo. Esse post pode te ajudar com isso: JPA Consultas e Dicas.
A classe query utiliza dos método setParameter.
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
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.
Ó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
Ótimo artigo, entendi um pouco melhor.Você poderia criar sua própria criptografia. Poderia ser valor=@#*(*&(*&LSJSDLKAJSDBom 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
e na página você trataria esse valor.
Desconheço um modo automático de se fazer isso.
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>
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?Você pode utilizar alguma criptografia pronta que acha na net. Não tenho nada pronto.<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>
Para enviar e receber um parâmetro via get no JSF você pode ver como fazer aqui: JSF Parametros por Get Request RESTFull.