【问题标题】:Read parameter from php in jsp从jsp中的php读取参数
【发布时间】:2023-03-23 20:09:01
【问题描述】:

我在php中有如下代码sn-p

if($userName==$dbUserName&&md5($passWord)==$dbPassWord){

            echo "<input name='username' type='hidden' value='$userName'>";
            header('Location: http://localhost:8080/ClientModule/student.jsp');
            die();

        }

php 重定向到下面的jsp

<%@page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Student Home</title>
    </head>
    <body>
        <h1>
            Logged in as: ${param.username}
        </h1>
        <nav>
            <p><a href="student.jsp">Home</a></p>
            <p><a href="profile.jsp">Profile</a></p>
            <p><a href="tutorList.jsp">Teachers</a></p> 
            <p><a href="studentNotifs.jsp">Notifications</a></p> 
        </nav>
    </body>
</html>

我一定是在 php 文件中做错了什么,有人可以帮我找出来吗? 非常感谢任何帮助

【问题讨论】:

  • 检查您的$username $dbUserName$dbPassword 是否正确。

标签: php html jsp


【解决方案1】:

当你这样做时:

        header('Location: http://localhost:8080/ClientModule/student.jsp');

浏览器只是向指定的 URL 发出 GET 请求。您在上面的行中回显的表单字段不包含在此请求中。相反,你想要的是这样的:

        header('Location: http://localhost:8080/ClientModule/student.jsp?username='.$userName);

【讨论】:

  • 根据我的教授的说法,这种方法很容易被欺骗。由于该参数在 url 中很容易看到,因此用户可以简单地更改该值以假装是另一个用户。就我而言,必须采取一些措施来防止这种情况发生,但可能会有一些更好的方法。
  • 对,所以通过这种方法,我可以通过更改 URL 以任何人身份登录。中途无法拦截的数据,无论数据在URL中是否可见,都没有办法将数据发送到服务器。为了解决这个问题,您必须使用只有服务器才能知道的东西才能对用户进行身份验证。如果您只使用 PHP,您可以通过会话来执行此操作,但是当您混合 PHP 和 JSP 时,它会有点棘手。
  • 您可能想研究进行用户身份验证的方法,例如stackoverflow.com/questions/1624846/…
  • 确实如此。为此,我也一直在尝试使用 cookie。显然 php 和 jsp 如何设置和获取 cookie 存在差异,这是另一个问题
  • Cookie 是标准化的,因此在 PHP 和 JSP 之间传递 cookie 应该没有任何问题。但是,cookie 与任何其他数据一样以纯文本形式与请求一起发送,因此问题仍然存在:如果您让用户仅通过指定用户名来登录,那么您的网站将非常容易被黑客入侵。
猜你喜欢
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 2011-05-08
  • 1970-01-01
  • 2018-02-19
  • 2012-06-01
相关资源
最近更新 更多