【问题标题】:How much web security knowledge do I need before I can publish my site? [closed]在发布我的网站之前,我需要多少网络安全知识? [关闭]
【发布时间】:2013-01-27 18:15:10
【问题描述】:

我正在编写我的第一个 php/mysql 站点,并意识到除了我在课程/书中学到的知识之外,我对安全性知之甚少。在发布自己的网站之前,我需要多少安全知识,而不必担心即使取得适度的成功也会吸引黑客并导致我的网站被入侵?

如果它有助于提供更多细节,我将创建一个允许用户添加纯文本内容以及浏览其他人添加的内容的网站。该文本旨在存储在数据库中。

【问题讨论】:

  • “如何保护我的 Web 应用程序”的回答范围很大。基础:使用准备好的 sql 语句,不要使用快速哈希来存储密码,使用 bcrypt 或类似的。
  • 首先,如果您正在阅读课程/书籍,您应该前往owasp.org/index.php/Category:Attack,那么您很可能容易受到某些东西(SQL 注入、XSS)的影响,因为其中大多数书籍都没有实现安全性它会使学习者感到困惑。
  • @Jon 什么是快速散列而不是非快速散列?我正在考虑使用我读到的 sha-512。我应该改用 bcrypt 吗?如果可以,你能解释一下原因吗?
  • @LawrenceCherone 我现在阅读了其中的一些文章,感谢分享。它讲授了各种攻击,我不知道有多少,也不知道哪些与我建立保护措施相关。例如,中间人攻击是基于 LAN 漏洞,如果我理解正确的话,不在我的控制范围内。
  • @gabrielg 使用快速散列(即任何真正的“散列”方法,包括 sha-512)现在很容易用计算机复制。 bcrypt 提供了一种解决方案,既可以对密码进行加盐,又可以很慢。如需更多参考,请查看:phpmaster.com/…problog.jon-lawrence.com/2012/08/a-little-about-passwords

标签: php mysql security sql-injection


【解决方案1】:

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

SQL Injections

XSS

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

【讨论】:

  • 谢谢 s.lenders - 我会去阅读那些维基百科文章,看看我学到了什么! :)
【解决方案2】:

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

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

  • Sql 注入
  • 表单欺骗
  • XSS

并记住:

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

还可以查看this guide,它总结了最著名的安全问题。

【讨论】:

  • Jeffrey 这真的很有用 - 一个明确的答案,我应该把注意力集中在哪里。我还不能投票给答案,但如果可以的话,我会投票给你。感谢您帮助新手!此外,该指南非常好 - 我非常感谢链接!
【解决方案3】:

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

【讨论】:

  • 是的,好点子 - 我们在课堂上讨论了 sql 注入,所以我会像您和 s.lenders 指出的那样进一步研究这些!谢谢你帮助我!
【解决方案4】:

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

问问自己:

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

关于风险:

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

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

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

Open Web Application Security Project

是一个很好的学习资源

【讨论】:

  • 很棒的工厂,帮助我了解学习的方向。我真的很感谢你花时间写出所有这些细节,如果我能投票给你的答案,我会的!我特别喜欢 If 'issue' then learn 'solution' 格式!
猜你喜欢
  • 2013-10-27
  • 2011-02-12
  • 2015-01-08
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2016-09-25
相关资源
最近更新 更多