Java 如果用户试图通过url更改参数

Java 如果用户试图通过url更改参数,java,jsp,servlets,Java,Jsp,Servlets,有一种情况是,用户通过URL更改发送给servlet的参数 有没有办法限制用户不更改参数 如果没有,如何管理发送到servlet的所有参数?如果它们很多,那么依次检查每一个是否合理呢?您无法避免有人键入URL,但您在servlet中所做的是使用一些java代码过滤从URL接收到的输入 示例: 刚刚找到一个有趣的链接,其中Servlet过滤器用于过滤XSS攻击(如您所见,没有这样的代码可以避免有人在URL中键入某些字符或类似内容):您无法避免有人键入URL,但您在Servlet中所做的是过滤从UR

有一种情况是,用户通过URL更改发送给servlet的参数

有没有办法限制用户不更改参数


如果没有,如何管理发送到servlet的所有参数?如果它们很多,那么依次检查每一个是否合理呢?

您无法避免有人键入URL,但您在servlet中所做的是使用一些java代码过滤从URL接收到的输入

示例:


刚刚找到一个有趣的链接,其中Servlet过滤器用于过滤XSS攻击(如您所见,没有这样的代码可以避免有人在URL中键入某些字符或类似内容):

您无法避免有人键入URL,但您在Servlet中所做的是过滤从URL接收的输入,使用一些java代码

示例:


刚刚找到一个有趣的链接,其中Servlet过滤器用于过滤XSS攻击(如您所见,没有这样的代码可以避免有人在URL中键入某些字符或类似内容):

您不能限制用户向您发送任何内容

它是可以添加限制的服务器端


通常,您只获得所需的参数,因此附加参数不应困扰您。

您不能限制用户向您发送任何内容

它是可以添加限制的服务器端


通常,您只获得所需的参数,因此其他参数不应该困扰您。

您肯定应该检查发送到servlet的参数。这基本上就是你要做的,因为这是客户端(比如网页)与你的应用程序进行通信的方式

您肯定应该检查发送到servlet的参数。这基本上就是你要做的,因为这是客户端(比如网页)与你的应用程序进行通信的方式

最简单的方法是使用一些隐藏的秘密对参数进行散列,并将其与URL一起传递,然后将散列与URL参数进行比较,以确保它们匹配

另一种方法是不使用单个参数,而是将它们加密为一组编码的字符,然后在返回时对整个内容进行解密


如果您不关心用户是否看到实际参数,则哈希更容易实现。

最简单的方法是使用一些隐藏的秘密对参数进行哈希,并将其与URL一起传递,然后将哈希与URL参数进行比较,以确保它们匹配

另一种方法是不使用单个参数,而是将它们加密为一组编码的字符,然后在返回时对整个内容进行解密


如果您不关心用户是否看到实际参数,则哈希更容易实现。

简单地说,您无法阻止用户更改参数


必须对所有参数值进行输入验证。如果您有一个包含敏感信息的变量,则不要将其放在URL上。一个非常糟糕的例子:。此类信息需要进入会话,因为这些信息存储在服务器上,用户无法获取。

简单地说,您无法阻止用户更改参数


必须对所有参数值进行输入验证。如果您有一个包含敏感信息的变量,则不要将其放在URL上。一个非常糟糕的例子:。此类信息需要进入会话,因为这些信息存储在服务器上,用户无法获取。

问题到底是什么?你能举例说明你认为用户做错了什么吗?如果您使用查询字符串发送参数,那么您将无法阻止用户键入自己的值,但是当用户输入时,您可以通过请求中的
getParameterNames
来检查这些值。web开发中的每件事都需要做任何工作!该评论实际上并没有澄清情况;)很多工作?这就是框架存在的原因:)不管怎样,为什么要阻止它?当用户这样做时,您到底面临什么问题?XSS攻击?@Bozho,每件事都需要做,我们不应该忽视任何简单的事情,@BalusC,当我在参数中键入任何东西时,浏览器中会出现白色页面。问题到底是什么?你能举例说明你认为用户做错了什么吗?如果您使用查询字符串发送参数,那么您将无法阻止用户键入自己的值,但是当用户输入时,您可以通过请求中的
getParameterNames
来检查这些值。web开发中的每件事都需要做任何工作!该评论实际上并没有澄清情况;)很多工作?这就是框架存在的原因:)不管怎样,为什么要阻止它?当用户这样做时,您到底面临什么问题?XSS攻击?@Bozho,每件事都需要做,我们不应该忽略任何简单的事情,@BalusC,当我在参数中键入任何东西时,浏览器中会出现白色页面。这个过滤器很有趣,但请注意,它本质上是防止XSS攻击的错误位置。您通常希望在视图侧执行此操作。例如,仅使用标准JSF或在旧JSP中使用JSTL
标记或
fn:escapeXml()
函数。这可能不是最好的示例。但我认为这已经足够证明我所说的话是切实可行的了。这是通过使用servlet或筛选器与用户请求交互,因此我们可以避免通过URL到达某些不需要的值。该筛选器很有趣,但请注意,它本质上是防止XSS攻击的错误位置。您通常希望在视图侧执行此操作。例如,仅使用标准JSF或在旧JSP中使用JSTL
标记或
fn:escapeXml()
函数。这可能不是最好的示例。但我认为这已经足够证明我所说的话是切实可行的了。这就是与用户交互