0

I'm coding my first php/mysql site and realize that I know very little about security beyond what I learned in my course/book. How much security knowledge do I need before I can publish my own site without being concerned that achieving even modest success will draw hackers and lead to my site being broken into?

If it helps with more specifics, I'm creating a site that will allow users to add plain text content, as well as browse what others have added. The text is meant to be stored in a db.

4

4 回答 4

3

你不可能知道一切,所以这取决于你的代码有哪些可能的攻击媒介以及风险是什么。

问你自己:

此列表不完整,但应涵盖简单 Web 应用程序的最常见用例及其安全威胁

关于风险:

一旦您处理了用户的敏感个人数据或将网站托管在您自己的虚拟服务器上,您就有额外的责任,因为最坏的情况不再只是您的网站可能被破坏,而是私人数据可能会暴露,您的服务器可能会发生变化变成垃圾邮件机器人或更糟。

最重要的规则是:不要相信任何传入的数据

此规则的扩展,对初学者很重要:准确使用适合当前环境的度量。不要只在您知道的用户输入中投入一切,并希望它会更安全,这会适得其反!我经常看到这样的问题:“如果我addslashes(mysql_real_escape_string(strip_tags(htmlspecialchars())))在所有 $_POST 变量上使用,我的应用程序是否安全?” - 如果您甚至认为这是一种有效的方法,那么您对有关用户输入的安全性如何工作有一个严重的误解。我再说一遍:什么是安全的,什么不是,总是取决于上下文!

一个很好的学习资源是开放 Web 应用程序安全项目

于 2013-02-12T13:05:41.310 回答
2

这永远不够。但希望你会不断进步。也许当你准备好时,你就会了解自己。

了解最常见的安全问题,例如:

  • Sql 注入
  • 表单欺骗
  • 跨站脚本

并记住:

  • 始终验证用户输入(包括会话)
  • 阻止访问不应公开的文件夹
  • 使用河豚而不是 md5/sha1 作为密码
  • 向最终用户隐藏错误(并记录它们)

另请查看本指南,该指南总结了最著名的安全问题。

于 2013-02-12T12:34:16.590 回答
1

看看 SQL 注入和 XSS。这一切都在验证用户输入。永远不要相信用户。

SQL 注入

跨站脚本

最后最好的学习方法是因为安全性差而遭受攻击。然后你就会明白它是如何工作的。只有一个提示,进行备份。

于 2013-02-12T12:33:17.080 回答
0

您网站中最关键的一点是用户可以向您的数据库提供文本。在 stackoverflow 上阅读此问题,以获得有关如何防止 sql 注入的良好答案。 如何防止php中的sql注入

于 2013-02-12T12:35:12.380 回答