次のタイプのオブジェクトを GWT クライアントからサーバーに RPC 経由で送信するとします。オブジェクトはデータベースに保存されます。
public class MyData2Server implements Serializable
{
private String myDataStr;
public String getMyDataStr() { return myDataStr; }
public void setMyDataStr(String newVal) { myDataStr = newVal; }
}
クライアント側では、フィールド myDataStr を最大 20 文字に制限します。
私はWebアプリケーションのセキュリティについて読んでいます。私が何かを学んだ場合、それはクライアントデータが信頼されるべきではないということです. その後、サーバーはデータをチェックする必要があります。したがって、フィールドが実際に20文字を超えていないことをサーバーで確認する必要があるように感じます。そうでない場合は、攻撃の試みであることがわかっているため、リクエストを中止します(もちろん、クライアント側にバグがないことを前提としています)。
だから私の質問は:
フィールドが 20 文字以内であることをサーバー側で実際に確認することはどれほど重要ですか? つまり、攻撃の可能性/リスクはどのようなもので、その結果はどれほど悪いものになる可能性があるのでしょうか? 私が読んだところによると、オーバーフローとサービス拒否によってサーバーをダウンさせる可能性があるように見えますが、セキュリティの専門家ではないため、誤解している可能性があります。
サーバー上でフィールドサイズのチェックを行うのに時間を無駄にしないと仮定すると、どのようにそれを達成する必要がありますか? 素朴なチェックのようなものを読んだことを思い出したようです(参照がなくなりました)
if (myData2ServerObject.getMyDataStr().length() > 20) 新しい MyException() をスローします。
は正しい方法ではありません。代わりに、メソッド readObject() を定義 (またはオーバーライド) する必要があります。もしそうなら、RPC 呼び出しのコンテキスト内でどのように行うべきでしょうか?
前もって感謝します。