相关疑难解决方法(0)

保存密码:最佳实践?

我一直都很好奇...在使用散列密码进行散列时哪个更好:前缀或后缀?为什么?或者它是否重要,只要你加盐?

为了解释:我们所有(希望)现在我们应该知道之前,我们哈希它存储在数据库中的密码[ 编辑:所以你能避免类似的事情发生了什么杰夫阿特伍德最近.通常,这是通过在将盐传递给散列算法之前将盐与密码连接来完成的.但是这些例子各不相同......有些例子在密码之前加盐.一些示例在密码添加salt .我甚至看到过一些尝试将盐放在中间的人.

那么哪种方法更好,为什么呢?有没有一种方法可以减少哈希冲突的可能性?我的谷歌搜索没有找到关于这个问题的体面分析.

编辑:很棒的答案人们!对不起,我只能选一个答案.:)

passwords hash cryptography salt

157
推荐指数
6
解决办法
7万
查看次数

Java中会话管理的最佳选择

在Java中管理会话的最佳方式.我听说cookie不是可靠的选项,因为它们存储在浏览器中,以后可以访问?它是否正确?如果可能的话,请用编码示例提出答案.

哪个是最好的:

  • URL重写:服务器将在URL链接的末尾添加一个附加参数
  • Form:server中的隐藏参数将在HTML中的每个表单中添加一个附加参数
  • cookie:服务器会要求浏览器维护cookie.

java cookies session servlets url-rewriting

51
推荐指数
2
解决办法
6万
查看次数

如何在Java Web应用程序中将会话过期时重定向到"登录"页面?

我正在JBoss AS 5中运行一个Web应用程序.我还有一个servlet过滤器,它拦截了对服务器的所有请求.现在,如果会话已过期,我想将用户重定向到登录页面.我需要执行此操作'isSessionExpired()'检查过滤器并需要相应地重定向用户.我该怎么做?我在web.xml中设置会话时间限制,如下所示:

<session-config>
    <session-timeout>15</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

java servlets login servlet-filters

45
推荐指数
5
解决办法
19万
查看次数

如何最好地存储用户信息和用户登录名和密码

我正在使用Mysql,我认为最好将用户个人信息及其登录名和密码分成两个不同的表,然后在两者之间引用它们.

注意:为了澄清我的帖子,我了解保护密码(哈希,盐等)的技巧.我只知道,如果我遵循生命中其他部分(投资,数据备份,甚至是个人存储)的做法,在最坏的情况下(包括表格或火灾),在表格之间分配信息可以保护您的其他数据.

php mysql security passwords

30
推荐指数
4
解决办法
8万
查看次数

如何处理数据库中用户的身份验证/授权?

目前,我正在使用JSF 2.0,Tomcat 7和MongoDB开发一个Web项目.我有一个很大的问题,如何处理数据库中用户的会话管理和身份验证/授权.

我想要的结构如下:只有登录用户才能创建事件,每个人都可以看到创建的事件.

  • create.xhtml - >仅适用于已登录的用户.
  • events.xhtml - >为大家公开.

我计划的基本结构是:

  • 检查页面是否需要登录用户(例如create.xhtml)
  • 如果是,请检查用户是否已登录
  • 如果用户未登录,请转到 login.xhtml
  • 如果成功登录,请返回请求的页面
  • 除非用户单击"注销"按钮,否则请保留"用户已登录"信息.(我想@SessionScoped进入比赛)

问题是:

  1. 这种不那么复杂的方法是什么?
  2. 我应该在哪里使用@SessionScoped注释?在Create.javaLoginManager.java
  3. 对于我的问题,Spring安全性看起来很复杂,我真的需要它吗?如果是的话,你能解释一下实现如何与JSF 2.0和Mongo DB一起工作吗?

database authentication jsf authorization java-ee

28
推荐指数
1
解决办法
3万
查看次数

用于登录的身份验证过滤器和servlet

我有一个用于登录的过滤器.它在"用户名"和"密码"字段上执行文本检查.当且仅当文本检查正确完成时,请求才会进入Servlet.后者执行必须与数据库交互的控件.这个链条是否正确?

authentication servlets login-control servlet-filters

22
推荐指数
1
解决办法
5万
查看次数

JSP:如何检查用户是否已登录?

我正在学习Java Web,但我遇到了一些问题,需要帮助.我使用了template.jsp,其中包括header.jsp,footer.jsp,login.jsp(模板的左侧)和${param.content}.jsp.对于名为X.jsp的每个页面,我创建了另一个具有以下内容的jsp,因为我希望每个页面具有相同的布局:

<jsp:include page="template.jsp">
    <jsp:param name="content" value="X"/>
    <jsp:param name="title" value="Start navigate"/>`enter code here`
</jsp:include>
Run Code Online (Sandbox Code Playgroud)

例如,当我点击Review链接时,我想重定向到Review.jsp,但是我遇到了一些问题.在footer.jsp我有这样的事情:

(...)
< a href =" Review.jsp "> Review </a>
(...)
Run Code Online (Sandbox Code Playgroud)

登录后,我尝试单击Review,它将我发送到Review.jsp,但它告诉我我没有登录.我使用Spring Framework,Tomcat 7,Eclipse,MySQL.当我登录时,我创建了一个cookie:

String timestamp = new Date().toString();
String sessionId = DigestUtils.md5Hex(timestamp);
db.addSession(sessionId, username, timestamp);
Cookie sid = new Cookie("sid", sessionId);
response.addCookie(sid);
Run Code Online (Sandbox Code Playgroud)

对于每种方法,我都有类似的东西(我在教程中看到过):

@RequestMapping(value = "/writeReview", method = RequestMethod.GET)
public String nameMethod(@CookieValue("sid") String sid,...)
Run Code Online (Sandbox Code Playgroud)

使用sid,我可以找出谁是用户.我有一个包含用户帐户和其他一些表的数据库.问题是,当我点击评论或其他任何内容时,它会告诉我我没有登录.我该怎么办?

更新:
我将JavaBean用于user和login.jsp.具有登录文本框的JSP,当我单击按钮登录时,我有一个GET方法.

@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView createCookie(
  @RequestParam("username") String username, @RequestParam("password") String password, …
Run Code Online (Sandbox Code Playgroud)

java jsp authorization servlets servlet-filters

11
推荐指数
1
解决办法
2万
查看次数

如何正确使JSP会话无效?

所以这就是问题所在.当用户退出我的网站时,他们仍然可以点击后退按钮并继续使用该网站.为了跟踪用户是否登录,我创建了一个会话属性"isActive".用户登录时该属性设置为true,并且在注销时会话无效之前(冗余)删除该属性.同样在每个页面上,我都会检查属性是否存在.

我还指定不应在其head标签中缓存页面.

尽管如此,用户仍然能够回击浏览器,并继续使用该网站,就好像他们从未注销过一样.

有关如何解决此问题的任何想法?

这是代码:

登录Servlet:

...
session.setAttribute("isActive", true);
//Redirect to home page.
Run Code Online (Sandbox Code Playgroud)

检查登录的JSP:

<c:if test='${empty sessionScope.isActive || sessionScope.isActive != true}'>
     <c:redirect url="/index.jsp?message=Session Timed Out."/>
</c:if>
Run Code Online (Sandbox Code Playgroud)

注销Servlet:

request.getSession().removeAttribute("isActive");
request.getSession().invalidate();
response.sendRedirect("index.jsp");
Run Code Online (Sandbox Code Playgroud)

内部标记:

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
Run Code Online (Sandbox Code Playgroud)

谢谢

java security session jsp invalidation

9
推荐指数
1
解决办法
2万
查看次数

如何使用servlet对用户进行身份验证

我是Java EE的新手.我创建了一个登录表单和servlet来验证用户的凭据,但是当我getRemoteUser()在验证后用方法检查远程用户时,我的代码不显示用户名.

我的登录servlet是:

String uname,pass;
PreparedStatement ps=null;
uname=request.getParameter("uname");
pass=request.getParameter("pass");

ResultSet rs = null;
Connection con = null;
try {
    con = prepareConnection();

    String Query="select uname,email from passmanager where pass=?";
    ps=con.prepareStatement(Query);

    ps.setString(1,pass);
    rs=ps.executeQuery();

    while(rs.next())
    {
        if (uname.equals(rs.getString("uname")) || uname.equals(rs.getString("email"))) 
        {
            rs.close();                                                              
            ps.close();                                                            
            ps = null;                                                             
            con.close();                                                            
            con = null;  
            HttpSession session = request.getSession(true); 
            session.setAttribute("currentSessionUser",uname); 
            RequestDispatcher dis = request.getRequestDispatcher("/user.html");
            dis.forward(request, response);
            break;
        }
    }
}
catch(Exception e)
{
    System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

如果有任何需要更改/修改,请告诉我并帮助我.....提前感谢.

authentication servlets login java-ee web

2
推荐指数
1
解决办法
2万
查看次数