问题列表 - 第3610页

使用Cookie和Salted Hashes的PHP登录系统

我正在开发一个基于PHP的登录系统.每个用户都有一个ID(一个数字)和一个密码,它被存储为盐渍哈希.

我能够确定登录是否成功,但现在我需要在某处存储该信息(以便用户不会永久注销).

在过去,我玩过$ _SESSION变量.但是,这些似乎在用户离开浏览器时被删除,这是不希望的.此外,我不能"假设"用户不会试图欺骗系统,因此它必须是安全的.

所以,这是我的问题:

  1. 我应该使用$_SESSION$_COOKIE?每种方法的主要优点是什么?
  2. 如何实现"记住我"复选框?
  3. 哪些信息应存储在session/cookie变量中?

请注意,在此特定问题中没有考虑数据库安全问题.

关于3号,我的意思是:

  • 我应该在cookie/session中存储用户的ID和哈希密码,或者
  • 我应该在cookie/session中存储用户的ID和非散列密码,或者
  • 我应该存储"SessionID"和密码(散列或非散列?)或
  • 我应该存储"SessionID","ID"和密码(再次,散列或非散列)?

我想让我的网站尽可能安全但高效且用户友好.如果采用基于SessionID的方法,我也会对如何将其存储在数据库中的一些解释表示赞赏.

先感谢您

编辑:伊兰和布莱恩的答案似乎是我需要的.不幸的是,我只能将其中一个标记为已接受.我会尝试继续实施,看看哪一个更有用.

php cookies session login

18
推荐指数
2
解决办法
8337
查看次数

什么是SQL Like运算符的合适替代品以提高性能?

我正在开发一个在Windows Mobile 6上运行的应用程序,它需要能够从项目表格中检索包含给定字符串(由最终用户提供)的项目表中的所有项目.问题是表中大约有170,000个项目.由于我需要在描述中的任何位置返回包含字符串的所有项目,因此我不得不使用LIKE%string%,这样就无法使用索引.数据和表结构最初基于Progress数据库,它在任何单词索引字段上都有一个精彩的包含运算符.我们的移动应用程序不是这种情况,因为它使用的是SQL Server Compact 3.5.

基本上,我的DAL运行查询并检索SqlCeDataReader,然后使用ItemFactory创建仅包含匹配项的List对象.这显然可以让我们将域/业务对象与数据访问层分开.

精细和花花公子,除了在我搜索描述中包含类似"高尔夫"之类的所有项目时检索项目所需的8米和42秒.显然,这不是最终用户可接受的时间范围.

我的第一次尝试是使用SELECT*FROM Item"(在其中一个主索引字段上使用order by子句)从数据库中检索所有项目.此时,我在运行SqlCeDataReader时运行了IndexOf检查如果项目包含所请求的描述文本,则ItemFactory仅向List对象添加项目.这将速度提高到1m 46s.不是太破旧,但仍然太慢.

然后我尝试了另一种显示出承诺的方法......几乎......当应用程序启动时,我尝试创建一个包含数据库中所有项目对象的List(大约需要2分钟来运行查询并填充整个列表,但是至少它只是一次,因为应用程序正在初始化......仍然......呃).一旦列表完成,我可以轻松地在该列表上运行查询,执行以下操作(我希望我的语法正确...我现在不工作,我没有在PC上使用Visual Studio我坐在那里:

List<Item> specificItems = 
    AllItems.FindAll(i => i.Description.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0);
Run Code Online (Sandbox Code Playgroud)

这种方法将其降至21秒.非常好(虽然在宏伟的计划中仍然很慢).但是,问题是如果我从数据库加载所有项目,内存使用量太大了.在初始加载期间,我必须切断最后20,000个项目(所以21s时间框架可能更像是25s),因为抛出了OutOfMemoryException.根据模拟器上的内存管理器,我仍然有大约20 MB的空闲RAM,但我听说一个进程只能有32 MB或RAM相关联(不确定WM 6是否属实,但它出现了所以).

为了确保它不是因为我使用List对象来保存所有项目(我在构造函数中实例化了所需的容量以避免动态调整大小),我也读过它可能会导致额外的内存使用量implicity调用EnsureCapacity,我尝试使用Item []数组(提前调整大小).这仍然存在内存问题,尺寸差异可以忽略不计.

好吧漫无边际.我知道我可能会有一些如何限制datareader从数据库返回的记录(通过对不同类型字段的一些索引搜索),然后可能会在较小的项目子集上使用indexOf来获得最大性能(因此一起跳过Like运算符).这将导致最终用户不仅必须输入描述搜索(可能是项目层次结构信息以限制在其中搜索的项目类型).

有任何想法吗?我是以错误的方式来做这件事的吗?

谢谢你的聆听(对不起这篇文章很长,我有点大声思考).

哦,我应该添加(只是总结)我正在使用的东西:

  • Windows Mobile 6
  • Sql Server Compact Edition 3.5
  • C#3.5

更新:虽然下面提到的Bloom Filter方法看起来很有趣,但我无法满足一个要求(我上面没有真正说明).我无法真正匹配其他词语中包含的词语(例如"俱乐部"不会返回"俱乐部").因此,我被迫完全使用不同的方法(Kent Fredric ......感谢你指出这一点).我已经将Kent的答案标记为正确,因为他的方法是满足最多要求的(Mitch,你的问题与Jaunder建议的Bloom过滤器类似).但是,我采用了不同的方法(现在......),而不是他的方式.

我所做的是将所有项目对象拉入内存,只有项目编号和描述(这使其保持在内存限制之下,但它仍然会导致比我喜欢的更长的初始化...多线程并在后台加载该信息而应用程序正在运行可以照顾我猜).为了执行搜索,我编写了自己的包含例程.该例程使用非托管c#代码编写,该代码使用两个指针和几个循环来运行描述和所需的匹配文本.如果它在描述中的任何位置找到匹配项,则会将项目编号添加到数组中.搜索完所有项目后,新查询将返回到数据库并仅捕获匹配的项目编号(由于整数字段上的索引,该编号非常快).然后,这些项目在List中创建,包含所有信息(不仅仅是项目编号和描述).整个操作大约需要5-10秒(取决于描述),这对于现在来说已经足够了.

我仍然会考虑进一步优化它(可能能够跟踪搜索项的字符数...如果项目描述中剩余的字符少于所需的文本,则循环可以继续直接到下一个项目) .

任何建议仍然欢迎.现在我已将肯特的答案标记为我的问题"最正确".

向Dolch道具,帮助我编写包含例程.

performance memory-management windows-mobile sql-server-ce sql-like

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

MacBook Air适合偶尔开发工作吗?(Ruby,Objective C,Cocoa)

MacBook Air有足够的马力来偶尔在Ruby中进行开发吗?目标C?可可?

这样做还有其他主要限制吗?

笔记:

  • 我将它连接到一个大型监视器.
  • 我希望使用标准的主流Mac IDE.
  • 我知道MacBook或Pro会更合适,但它们并不那么酷.
  • 该机主要用于网络等,非常适用于家用电器.
  • 而你猜对了 - 我是一个无知的Windows开发人员:)

macos

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

在跳转到JavaEE之前,我应该做更多的JavaSE吗?

我差不多完成了"Head First Java"这本书.我正在研究这个的原因是我希望有一天能用JavaEE开发工作.现在我在想,我应该继续学习EE(转向Head First Servlets和JSP)还是应该花更多时间学习SE?这会有帮助吗?我会继续直接说我想在最快但最理想的时间学习EE(平衡的方式).有什么建议?

提前致谢!

java java-ee

6
推荐指数
1
解决办法
2151
查看次数

Internet Explorer http referer问题

我似乎遇到了Internet Explorer 7的问题.我有一个html页面,其中包含指向另一台服务器上的文件的链接.我链接的服务器检查请求的引用者,如果引用者有效,它允许访问资源.它在firefox 2和3中工作正常(因为我的html页面所在的服务器是一个有效的引用程序)但在Internet Explorer中它不起作用,其他服务器拒绝我的资源(生成http 403错误).我正在做一些搜索并偶然发现这个http://support.microsoft.com/kb/178066并且我已经尝试了https和http的html页面以及我连接的服务器的相同内容但是我没有得到任何Internet Explorer .我该怎么做才能解决这个问题?

谢谢

internet-explorer http

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

你可以在 LaTeX 中迭代吗?

我是 LaTeX 的新手,我必须说我真的很挣扎。我发现 \newcommand 命令有点像常规编程语言中的函数/方法。你可以给它论据和一切。

我想知道,我可以以某种方式在 LaTeX 中迭代吗?基本上,我想做的是创建一个包含 N+1 列的表格,其中第一行只包含一个空白单元格,然后在其他列中包含数字 1、2、...、N。我只想将 N 作为这个“函数”(newcommand)的参数。

这是一个可能看起来像我正在寻找的东西的例子(尽管显然这行不通):

\newcommand{\mytable}[2]{  
\begin{tabular}{l|*{#1}{c|}} % 表,第一个参数+1 列  
  for(int i = 1; i <= #1; i++) "& i" % 'output' 不同列中的数字  
  \\\h线  
  字母 & #2 % 第二个参数应该包含行的实际内容  
  \\\h线  
\end{表格}  
}

调用它:

\mytable{3}{a & b & c}

输出应该是:

        | 1 | 2 | 3 |
--------+---+---+---+
字母 | | 乙 | | |
--------+---+---+---+

有谁知道这样的事情是否可能?

谢谢!

latex

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

回滚或将整个svn存储库还原为旧版本

我搞砸了我的SVN存储库,现在需要将整个存储库从版本28恢复到24,并且不想处理差异或冲突.有一种快速简单的方法吗?我已经能够在使用merge命令之前恢复单个文件 - 但在这个实例中,它希望将所有文件从版本28添加回存储库,而我真正想做的就是删除它们.

我在linux框(bash)上使用命令行.

谢谢

编辑

感谢您的帮助!我通过以下方式修复:

svnadmin create /svnroot/<repo>.fixed
svnadmin dump -r 1:24 /svnroot/<repo> --incremental > dump.svn
svnadmin load /svnroot/<repo>.fixed < dump.svn
Run Code Online (Sandbox Code Playgroud)

然后将旧的repo放在备份位置并将repo.fixed移动到repo.

再次感谢!

svn revert

74
推荐指数
6
解决办法
8万
查看次数

使用大型wsdl,可以修剪吗?

我的Web服务提供商为我提供了一个大型WSDL文件,但是我们将仅在其中使用一些功能。

我相信,大型WSDL对应用程序性能有负面影响。

我们在客户端应用程序中使用Web服务,启动时间内存使用量都是问题。大型WSDL意味着jax-ws将花费更长的时间进行绑定,并且将为存根类占用更多的内存。

是否可以将WSDL文件修整为轻量级版本?是否有用于此目的的工具?

我认为我的Web服务提供商不会为我们生成另一个WSDL。我们可能必须在构建脚本中自动执行此操作

java wsdl web-services jax-ws

6
推荐指数
1
解决办法
5073
查看次数

黑匣子与白盒测试

您认为哪种类型的测试应该是重点(对于测试人员/ QA),为什么?

维基百科的一组快速定义:

黑盒测试

  • 从测试对象的外部透视图中获取测试用例.这些测试可以是功能性的或非功能性的,但通常是功能性的.测试设计者选择有效和无效的输入并确定正确的输出.不了解测试对象的内部结构.

白盒测试

  • 使用系统的内部透视图来设计基于内部结构的测试用例.它需要编程技能来识别软件中的所有路径.测试人员选择测试用例输入来遍历代码并确定适当的输出.在电气硬件测试中,可以探测和测量电路中的每个节点; 一个例子是在线测试(ICT).

编辑:为了澄清一点,我意识到两者都很重要,但通常它们在开发和QA之间是分开的.

内部知识对测试人员/ QA很重要吗?我听说过用这些知识进行测试的论据使他们能够更好地测试问题,但我也听到过这样的论点,即这些知识可以分散功能需求并促进"测试代码"而不是预期的解决方案.

testing qa black-box white-box

56
推荐指数
4
解决办法
12万
查看次数

在CSS中分层图像 - 可以将2个图像放在同一个元素中?

假设我在CSS中为网页设置背景图像,如下所示:

body    {
font-size: 62.5%; /* Resets 1em to 10px */
font-family: Verdana, Arial, Sans-Serif;
background-color: #9D5922;
color: #000;
margin-left: auto;
margin-right: auto;
margin: 0;
padding: 0; 
background: url(images/desk.gif) repeat bottom left;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在body元素本身的桌面上层叠第二个图像,或者是创建单独的类并使用z轴的唯一方法?

对不起,这是一个简单的问题,但我一直试图解决这个问题,虽然我无法使其发挥作用,但我还没有在网上找到一个明确的想法,所以,是的有办法,还是这只是一个无法做到的?

谢谢!

css layout image z-index

15
推荐指数
3
解决办法
4万
查看次数