PHP/MySQL安全——从何开始?

8

我是一个对在线安全一无所知的PHP/MySQL新手。

你能为我指点一些有助于提高我的知识水平的资源吗?(请提供初学者级别的资料!)

5个回答

8

你唯一缺少的是提到 XSS。 - Joe Phillips

5

这个问题已经得到很好的回答,涵盖了MySQL注入攻击(其中一种更为常见的担忧)。 这个问题也有很好的文档记录,涵盖了跨站脚本攻击(XSS)。

最后,了解PHP.INI以及如何设置它,以及实际上开/关了什么。一个好的主机将永远不会打开register globals,但你至少应该知道它是什么以及为什么要检查它。PHP安全性提供了关于此和许多其他PHP安全问题的资源。


1

PHP可能不是最佳的起点,尤其是如果你主要自己编写代码。它并不能很好地处理安全问题。(注:出于各种原因,我希望PHP能够消失。)

但是有一些通用的规则:

  • 不要相信外部的任何东西。始终假设用户是一个试图破坏你的应用程序的混蛋。当然,他们中的大多数人不会这样做,但最终总会有一个这样的人。仅仅因为你给浏览器一个包含a、b和c的<select>标签,并不意味着你会得到其中之一。JavaScript并不能保证任何事情。Referer可以很容易地伪造。POST数据也可以很容易地伪造。文本框可以包含任何字符,而不仅仅是你期望的那些。
  • 如果你不确定别人的代码在生产环境中如何工作,就不要将其复制粘贴过来。你不知道作者对安全性有多么重视。根据我的经验,特别是PHP的复制粘贴似乎不太可靠,但更频繁地被盲目重用。
  • 不要相信自己能在几十个不同的地方执行相同的例行程序。是的,mysql_real_escape_string()可以解决SQL注入问题,但你必须记住在每个地方都使用它。这会导致很多地方可能出错,忘记转义的例行程序。相反,使用预编译语句,问题就完全消失了。另一个例子:Pylons(一个Python框架)调整其模板,除非你明确要求否则任何变量都会进行HTML转义。XSS不再是一个问题,我也不必担心手动转义我打印的每一样东西。

1

1

如果您有时间,可以查看几个月前 Stefan Esser 在荷兰 PHP 大会上所使用的幻灯片,主题为“PHP 安全入门课程”的会议

其中有几个 PDF 文件:

这些可能会有所帮助。

那么,不要犹豫,多搜索一些非特定于PHP的信息:有些安全问题(如XSS、SQL注入、CSRF等)并不特定于PHP:只有避免它们的技术手段是特定的;因此,您可以在维基百科或OWASP网站等网站上找到大量信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接