Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使我的网站使用jsp安全?_Jsp_Security_Webpage - Fatal编程技术网

如何使我的网站使用jsp安全?

如何使我的网站使用jsp安全?,jsp,security,webpage,Jsp,Security,Webpage,我有一个用jsp制作的网站,它要求用户通过提供用户名和密码进行身份验证。一旦他进行了身份验证,他就可以在他的帐户中执行各种操作。我要做的是使用数据库检查用户和密码是否完全匹配。但问题是,我只在第一页进行身份验证,如果他输入url,则在下一页中,他可以绕过身份验证,这违反了安全性。我知道这是一个非常常见的问题,但由于我是这一领域的新手,我不知道如何纠正这个问题?按照重要性顺序,越往下看,我想你越可以忽略它:) 首先,确保填写用户名/密码的页面使用https 其次,确保数据库不会将密码存储为明文,而

我有一个用jsp制作的网站,它要求用户通过提供用户名和密码进行身份验证。一旦他进行了身份验证,他就可以在他的帐户中执行各种操作。我要做的是使用数据库检查用户和密码是否完全匹配。但问题是,我只在第一页进行身份验证,如果他输入url,则在下一页中,他可以绕过身份验证,这违反了安全性。我知道这是一个非常常见的问题,但由于我是这一领域的新手,我不知道如何纠正这个问题?

按照重要性顺序,越往下看,我想你越可以忽略它:)

首先,确保填写用户名/密码的页面使用https

其次,确保数据库不会将密码存储为明文,而是使用非过时的算法对其进行加密。(crypt不正常)检查给定密码时,对用户输入的密码进行加密,并将两个加密表单相互比较。它们应该是相同的

第三,使用会话存储用户凭据(您可以在“loggedInUser”键下存储值:用户名。不要在此处存储密码:)

第四,在会话中,尝试存储来自用户请求的一些元素(ip地址、用户代理),当您检查用户是否已经登录时,您还可以验证ip、用户代理是否仍然匹配。这不是一个万无一失的解决方案,但它使欺骗会话变得更加困难

您可以编写一段简短的代码,可以在每个页面中包含(不是复制粘贴,而是使用include指令)。如果您将此代码段作为第一个包含在其他代码段之前的代码段,则可以将其直接添加到您的登录页面。(如果事先已经有换行输出,请小心,如果已经编写了response,则重定向不起作用。jsp真的不是一个进行逻辑处理的好地方)

文件:checkLoggedIn.jsp

<%
    String loggedInUser = session.getParameter( "loggedInUser" );
    if (loggedInUser == null) {
        response.sendRedirect("/login.jsp");
        return; // not 100% sure but think you need to have this one.
    }
%>


我相信这是使用.@Okuma.Scott yhen的唯一有用方法(对最终用户而言)之一。我必须检查每个页面上是否有cookie?这部分回答了我的问题。我希望用户在未登录的情况下不能访问更多url。如果您的登录页面有:session.setAttribute(“loggedInUser”,用户名)那么,当用户未登录时,上面的代码段将不会向用户显示任何url。未登录的用户将被重定向到login.jsp