有一些关于Web开发的问题(PHP和MySQL)

时间:2010-02-08 20:32:57

标签: php mysql

我已经完成了一些网页编程(使用PHP和MySQL),但没有太大的规模。我一直在考虑如何创建一个社交网站类型的网站,我遇到了一些问题。

  • 您如何安全可靠地在MySQL中存储密码?你会使用什么样的加密方式?
  • 如果允许用户上传图片,最好将它们存储在数据库中还是直接上传到服务器?
  • 您建议我阅读和学习哪些开源Web应用程序(如WordPress)(最好是简单但写得很好)?

在课堂上教授或用书写的任何东西似乎都不能很好地转化为真正的生产代码。它们看起来就像是非常基本的例子。

谢谢!

7 个答案:

答案 0 :(得分:3)

关于密码存储:使用单向盐渍哈希来提高安全性。 Here's an article on why

答案 1 :(得分:2)

  1. 存储盐渍哈希。我会亲自离开md5并使用sha之类的东西。 sha1 + salt会持续一段时间=]

  2. 如果您将图像作为blob存储在数据库中,您将来可能会有更轻松的时间备份它们(沿着数据库,获取它们等)。但实际上,它们在文件系统上也会非常快,但我更喜欢它们在数据库中,因为我有很多与db接口的代码,我很乐意在该区域工作。这取决于你。

  3. 我不确定wordpress会帮助你建立一个社交网站......但是阅读其他代码仍然很好。我会看一些关于建筑的亚马逊书籍,以让你的思维大规模思考。另外,看看一些设计模式书。

  4. 我还会研究Zend Framework或CakePHP之类的东西。 Cake可能会让你起步和跑步相当快,但我更喜欢Zend,因为它非常强大并且不会强迫你编写某种风格。 CakePHP有点像PHP的rails。

    你也希望在安全性方面,包括服务器和客户端,观察会话劫持,sql注入,xss,强力尝试,远程包含,上传文件漏洞等等。

    社交网站向破解者提供了许多攻击媒介。

    资源:

答案 2 :(得分:1)

对于图像存储,我总是习惯将它们存储在硬盘上,但使用非常硬的图像验证脚本来确保图像不包含恶意代码。 我也习惯于应用URL重写,因此用户无法找到图像的真实路径。

将图像存储到数据库中是否有一种奇怪的感觉? mysql数据库可以非常快速地增长,并且您将始终需要一个PHP脚本来显示图像,这意味着它会使您的服务器变慢。


对于密码存储,请在其他人回复时使用salting。


最后,对于文档,我真的很想看看Wordpress的结构。 我花了几个小时看它的源代码并阅读它的文档。这只是如何组织任何网站的一个非常好的例子。

答案 3 :(得分:1)

  1. 将哈希函数应用于密码(例如sha1或md5)。然后通过采取md5(“社交”)或其他东西的前5个字符来添加额外的“盐”。这取决于您,但这是为了让黑客获得对您数据库的访问权限,他/她将无法通过彩虹表运行您的散列密码并获得实际密码。
  2. 我正在运行一个允许用户上传图片的网站。这些图片是按照垃圾箱(即每个垃圾箱1000张图片)进行组织的,只是为了使它有条理(在遇到问题之前,每个文件夹只能包含这么多文件)。图片的位置存储在数据库中以及其他信息(如图片ID,文件扩展名,文件夹位置等)。数据库中的另一个表将图片ID链接到用户。此外,图片的文件名一旦上传就像

    {bin}/{userId}_{pictureId}_{token}_{variant}.{fileExt}

  3. 不确定Web应用程序,但您绝对应该使用一些内置的PHP类,例如PDO数据库抽象层。

答案 4 :(得分:0)

对于密码存储,我建议使用带有盐的MD5。 MD5无法解密,但可以使用彩虹表进行破解。例如:Here is a MD5 lookup site I've coded

我会亲自将它们直接上传到服务器,但是,您需要确保只能上传有效的图像文件。不希望有人上传根壳。

答案 5 :(得分:0)

问题3:我建议研究一种现代的Rails风格框架(我最喜欢的是Symfony)而不是像Wordpress或Gallery这样的应用程序。它们都非常出色,但是它们是从简单的黑客进化而来的,如果我从头开始,它不一定是我开始做任何事情的方式。

另外,对于问题2,我讨厌数据库中的二进制blob。文件系统非常适用于此。

问题1:单向哈希,正如其他人所说的那样。 Mysql的密码()函数可能没问题。

答案 6 :(得分:0)

以前所有这些问题都得到了回答。

  

您如何安全可靠地在MySQL中存储密码?你会使用什么样的加密技术?

请参阅https://stackoverflow.com/search?q=password+hash+database+php

  

如果允许用户上传图片,最好将它们存储在数据库中还是直接上传到服务器?

请参阅https://stackoverflow.com/search?q=store+images+database+php

  

您会推荐哪些开源Web应用程序(如WordPress)阅读和学习(最好是简单但写得很好)?

请参阅https://stackoverflow.com/search?q=social+network+php

您还应该考虑到运行和管理社交网站不仅仅是编码它。你确定要从头开始构建一个吗?考虑一下,如果你对Ning这样的事情同样感到高兴,那么每个人都可以在没有任何编程的情况下创建自己的社区?