php - 除了 SQL 注入(inject)和 XSS 攻击,还有什么我需要担心的吗?

标签 php mysql security xss sql-injection

我正在完成我的第一个“真正的”PHP 应用程序,我正在努力确保它是安全的。我有点担心,因为我不是“专家”PHP 程序员,我可能会遗漏一些巨大的东西,所以我想给你一些关于我的应用程序的信息,希望你能告诉我这是否是案子。所以我们开始吧:

  • 我正在使用 CMS 来处理用户身份验证,所以我不必 担心那个。
  • 开始工作后不久发现 PDO 在我的应用程序中,我将所有代码移植到使用准备好的 与 PDO 的声明。
  • 我正在转义使用 htmlentities() 输出的所有表单和数据库数据(甚至是我认为 安全的东西)。
  • 我的应用程序确实使用了 session 变量和 cookie 变量,但两者的功能并不重要。
  • 我设计表单处理函数的方式是,无论表单是否以某种方式被更改或从服务器外提交都无关紧要(即我总是检查提交的数据以确保其有效)。
  • 我已尽最大努力使所有错误消息和异常消息礼貌但非常晦涩。
  • 我强制通过 https 提供包含敏感信息的页面(例如登录页面)。

当我第一次开始编写我的应用程序时,我不知道准备好的语句,这是一个很大的问题。我还错过了什么吗?

最佳答案

OWASP 维护一个列表 Top 10 Most Critical Web Application Security Risks (警告,PDF 下载)。这是 2010 年的事,但我认为它仍然适用,现在可能更是如此。

注入(inject)和 XSS 是前两个,但您当然应该了解其他 8 个。如果您使用的是现有的 CMS,可能已经考虑了其中的许多问题,但是 CMS 越流行,您遇到的风险就越大漏洞,因为黑帽试图在其中找到漏洞。

如果您不存储信用卡、订单历史记录、地址甚至电子邮件等关键数据,那么只要您采取基本的预防措施(听起来你是)。

关于php - 除了 SQL 注入(inject)和 XSS 攻击,还有什么我需要担心的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352584/

相关文章:

php - 为了不覆盖列值而给 MySQL 更新的默认值?

android - 将系统日期和时间与数据库日期和时间分开比较,以开始另一项 Activity

select 中的 MySQL 子查询与外部字段的链接

PHP & MYSQL 未选择数据库

ruby-on-rails - 如何嵌入Haml的错误::Engine in a web page in production on Heroku

ios - DeviceCheck 或 indentifierForVendor 安全吗?

java - 安卓.security.KeyStoreException : User authentication required after upgrade to android 8

PHP foreach 表列

php - Google OAuth JWT 签名验证

php - 如何逐字节发送/接收数据