我正在构建一个小应用程序,在UI的一部分中,您可以对某些对象(人员)进行排序。所以当我打电话给这个网址时:
http://localhost:8080/addressbook/person/list?sort=name
一切都很好。
但是,当我将URL更改为以下内容时,我的应用程序会抛出异常:
http://localhost:8080/addressbook/person/list?sort=thisisanunknowproperty
我收到的错误如下:
Class
org.hibernate.QueryException
Message
could not resolve property: thisisanunknownproperty of: persons.Person
当然,这真的不是我想要的。应用程序应该不排序,而不是抛出这样的异常。但是,我该如何防止这种行为发生?
我想到的是,我构建的东西检查属性是否是允许排序的属性的成员,但我想知道是否有任何开箱即用的东西我错过了?
答案 0 :(得分:1)
正如我通过电子邮件提到的那样,请查看基于Grails Command Objects的Spring Validation API。
坚硬而快速的规则永远不会盲目地接受用户输入。在许多框架中,包括Grails,这暴露了一些令人讨厌的安全漏洞。