日期:2014-05-17  浏览次数:20763 次

JSP如何对GET和POST分别取值?
例如:
<form action="?UserID=1" method="POST">
   权限设置:
    <select name="Rule">
        <option value="1">管理员</option>
         <option value="2" selected="selected">普通用户</option>
    </select>
    <input type="submit" value="修改" />
</form>
ASP可以通过Request.Form("Rule")来限制仅取Form中值,这样就不会造成安全问题。但是jsp的request.getParameter("Rule")是不区分GET和POST的,这就造成了一个很大的安全问题了:只要访问.....jsp?UserID=1&Rule=1这样的网址,就能直接将用户设置为管理员。

假设我是管理员,从后台进入论坛,遇到一张图片,地址为.......jsp?UserID=10&Rule=1,那UserID为10的用户岂不会直接被设置成管理员了吗?

难道JSP会这么不安全?有没有GET和 POST安全取值的方法?
------最佳解决方案--------------------
存在你说的这种漏洞,但是最好还是不要用get方法来传送数据了。
解决的方法好多了。比如hidden表单就是很简单的了
------其他解决方案--------------------
yongpost 可以在form里面设置隐藏域  用作你的传值
------其他解决方案--------------------
一般都用POST
------其他解决方案--------------------
引用:
那么说,JSP很不安全了。

我倒是不想用GET来传送数据,但是有用户恶意从URL传递表单值我也没办法。


1.一般jsp作为显示层是要和逻辑层分开的,处理逻辑你可以用servlet  servlet里有doGet doPost方法
2.用session来标记用户才是比较好的办法。你现在这种做法,就算是用post,黑客只要写个程序发个post方法的http请求,你就悲剧了
------其他解决方案--------------------
引用:
但是被黑的几率大大降低了。至少不会出现看帖子的时候无缘无故把别人提权了得问题。至于黑客模拟的POST,很难通过身份认证了。

引用:
引用:那么说,JSP很不安全了。

我倒是不想用GET来传送数据,但是有用户恶意从URL传递表单值我也没办法。

1.一般jsp作为显示层是要和逻辑层分开的,处理逻辑你……



至于黑客模拟的POST,很难通过身份认证了。
===========================================
以你现在设计的情况,我想知道黑客模拟post怎么就难于通过身份认证了

------其他解决方案--------------------
建立一个拦截器,获取提交的request的 METHOD,根据这个值与传入的权限标示进行判断,不合要求直接返回错误提示
------其他解决方案--------------------
ServletActionContext.getRequest().getMethod();判断get,post
------其他解决方案--------------------
JSP本来就不是单独使用的。
建议看看Struts和Servlet的教程,然后再来讨论这个问题
------其他解决方案--------------------
一般像权限这种东西最好不要明码出现,要不用hidden表单提交,要不就用session进行获取,这样比较安全
------其他解决方案--------------------

jsp要被编译成servlet,是放到service方法里面的,因此,jsp本身是不区分get还是post的。
如果想要严格控制是get还是post,需要用servlet。

现在流行的SpringMVC之类的框架都是提供@Get,@Post之类的注解,这样就一目了然了。
------其他解决方案--------------------
根据REQUEST_METHOD来确定是否有POST操作?这倒是个安全补救措施。
但我觉得JSP如果没有GET和POST的取值区分方法,本身是一个很大的安全漏洞。
------其他解决方案--------------------
那么说,JSP很不安全了。

我倒是不想用GET来传送数据,但是有用户恶意从URL传递表单值我也没办法。
------其他解决方案--------------------
但是被黑的几率大大降低了。至少不会出现看帖子的时候无缘无故把别人提权了得问题。至于黑客模拟的POST,很难通过身份认证了。

引用:
引用:那么说,JSP很不安全了。

我倒是不想用GET来传送数据,但是有用户恶意从URL传递表单值我也没办法。

1.一般jsp作为显示层是要和逻辑层分开的,处理逻辑你可以用servlet  servlet里有doGet doPost方法
2.用session来标记用户才是比较好的办法。你现在这种做法,就算是用post,黑客只要写……

------其他解决方案--------------------