使Web应用程序安全

时间:2010-01-31 22:34:14

标签: php security

我想创建一个新的php web应用程序,如果我按照以下方式, 它我的网站安全吗?

  • 使用addslashes转义用户输入($ _GET&& $ _POST)
  • 使用PDO制作预备陈述
  • 检查用户输入的正确类型(例如int或string)

2 个答案:

答案 0 :(得分:6)

安全不是可以用来固定的东西 - 这是一个不断改进的过程。

  • 使用addslashes对您无效 - 您需要使用htmlentities转发输出。
  • 在PDO中使用预准备语句是好的。
  • 检查用户输入的类型是不够的 - 您需要更好地检查它。如果您希望电子邮件地址检查,请不要认为如果您有一个字符串就可以了。

还需要考虑更多安全事项,例如XSSCSRF ...

如果你能得到这本书The Web Application Hacker's Handbook: Discovering and Exploiting Security Flaws。它充满了有用的建议。

而且,我会再说一遍 - 安全性不是一个特征 - 它是一种衡量标准。没有100%安全的应用程序(或任何实际的)。安全性的假设是打破它比它背后的更昂贵 - 如果你的网站正在处理金钱 - 你需要更多的安全 - 如果你正在处理礼品卡 - 你甚至可以在没有做你建议的事情的情况下逃脱(这将是是一个非常糟糕的主意,但仍然。)

答案 1 :(得分:1)

不幸的是,Web应用程序安全性有很多问题。我建议阅读OWASP Top 10。另外,请务必阅读#5 XSRF。

“逃避”输入并不是很多。数据可以以许多不同的不安全方式使用。例如,防止PHP的xss的最佳方法是:

htmlspecialchars($_GET['var'],ENT_QUOTES);

阻止mqlql sql注入的好方法是:

mysql_query("select * from mysql.user where id='".mysql_real_escape_string($id)."'");

确保在所有变量周围加上引号,否则查询将容易受到sql注入的影响。但是更加防弹的方法是使用参数化查询(adodb,pdo ......)。但是xss和sql注入只是冰镇的一角,更多的是可以出错的PHP。我建议阅读免费论文A Study in Scarlet,了解具体的PHP安全隐患。