我有一个表单,我在那里输入所有的数据和提交按钮。我正在发送数据进行处理。但我注意到的是,我可以使用Firefox的篡改数据插件编辑我的帖子数据,我认为这是一个黑客。那么如何才能避免这个问题呢?我读到的是JSF使用默认的POST来发送数据,如果是这样,那么为什么它在Header中显示数据?是他们的任何方式,我可以控制这一点,并编码我的帖子数据?
这就是HTTP的工作原理。否则客户端如何能够将数据发送到服务器?注意,不要混淆请求头和请求体。POST数据出现在请求体中,而不是请求头中。
但是你为什么要避免这个呢?我能想到的唯一合理的原因是,您在客户端(例如使用JS)而不是在服务器端验证输入数据。你不应该这么做。您应该始终在服务器端进行验证。永远不要相信用户输入。尽量利用jsf提供的验证器,如required="true"
、<f:validateLongRange>
、javax.faces.validator.Validator
等。
只要在服务器端正确地验证,客户机就可以对HTTP请求做任何它想做的事情,并且您不需要担心安全性(也就是说,当您信任JSF和您自己的代码时)。JSF已经内置了防止XSS和CSRF的功能(在一定程度上,这在2.1和2.2中分别得到了改进)。
如果您的实际的关心的实际上是中间人攻击,那么您应该看看SSL (HTTPS)。