2010-08-09 27 views
0

可能重复:
PHP Session Security确保网络应用安全的基本原则?

我刚刚完成编码web应用的基础知识(主代码),我已经集成了一个基本的用户系统。这是我的第一个网络应用程序,所以我想知道我应该用什么来保护它?我已经知道像mysql_real_escape_string()strip_tags()之类的东西,但还有什么?我将如何通过Cookie和会话安全地存储用户名和密码?任何提示,教程等非常感谢!

+0

有关于此的大量资源在线。这是一个相对的主题:http://stackoverflow.com/questions/328/php-session-security。和另一个:http://stackoverflow.com/questions/2119083/php-tutorial-that-is-security-accuracy-and-maintainability-conscious – 2010-08-09 00:47:55

+3

http://stackoverflow.com/questions/72394/what-should-a开发人员知道建筑之前的公众网站是一个涉及同一主题的传奇性问题。 – ggg 2010-08-09 00:58:02

+0

@ggg谢谢! – williamg 2010-08-09 01:13:15

回答

2

OWASP对于最常见的漏洞和如何缓解这些漏洞提供了很好的建议。您应该熟悉它们覆盖的attacksvulnerabilities

通过阅读这些可能需要时间,但没有太多,它不是特别密集的阅读。也许你应该首先关注他们的top 10 security risks

+0

我很困惑的一件事是,我已经在很多地方(包括提供的链接ggg)阅读不要在cookie中存储用户名和密码。那么,如何将它们存储起来以便用户不必每次都登录。或者我不应该将它们作为纯文本存储在cookie中(md5将它们编码?) – williamg 2010-08-09 01:37:04

+0

改为使用会话ID。会话ID位于cookie中,并且在您的服务器上,您将用户名和其他会话变量与ID相关联。请注意会话ID也存在安全风险,因此请务必阅读(例如会话固定)。 – 2010-08-09 01:39:53

+0

但是,一旦用户关闭浏览器,会话和数据之间的连接会不会丢失? – williamg 2010-08-09 02:10:45

1

CWE/SANS Top 25 Most Dangerous Software Errors帮了我很多。

real_escape_string只打击MySql注入。另外,当用户必须输入数字时,例如,从index.php?newsid=3等URL中读取newsid=n,请确保$_GET['newsid']是在$_GET['newsid']之前加上(int)的整数。

一些真正基本的东西;)希望链接有帮助。