假设我通过 RPC 从 GWT 客户端向服务器发送以下类型的对象。对象被存储到数据库中。
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) throw new MyException();
不是正确的方法。相反,需要定义(或覆盖?)方法 readObject(),类似于此处。如果是这样,那么在 RPC 调用的上下文中应该如何做呢?
先感谢您。