安全指南
我们认真对待安全。 CodeIgniter 集成了许多功能和技术,以强制实施良好的安全实践,或使你可以轻松地这样做。
我们尊重 开放 Web 应用程序安全项目(OWASP) 并尽可能遵循他们的建议。
以下内容来自 OWASP 十大安全漏洞简介, 识别 Web 应用程序的十大漏洞。 对于每个漏洞,我们提供简要描述、OWASP 建议和 CodeIgniter 的对应措施。
A1 注入
注入是通过从客户端到应用程序的输入数据不当地插入部分或全部数据。攻击向量包括 SQL、XML、ORM、代码和缓冲区溢出。
OWASP 建议
表示层:设置正确的内容类型、字符集和区域设置
提交层:验证字段并提供反馈
控制器层: sanitize 输入;使用正确的字符集进行正向输入验证
模型层:参数化查询
CodeIgniter 对应措施
HTTP 库 提供输入字段过滤和内容元数据
验证库
A2 弱认证和会话管理
不充分的身份验证或不当的会话管理可能导致用户获得比他们有权获得的更多权限。
OWASP 建议
表示层:验证认证和角色;使用表单发送 CSRF 令牌
设计:仅使用内置会话管理
控制器层:验证用户、角色、CSRF 令牌
模型层:验证角色
提示:考虑使用请求管理器
CodeIgniter 对应措施
A3 跨站脚本(XSS)
输入验证不足,一个用户可以在网页上添加内容,当其他用户查看该网页时,这些内容可能是有害的。
OWASP 建议
表示层:根据输出上下文对所有用户数据进行输出编码;设置输入约束
控制器层:正向输入验证
提示:仅处理可信数据;不要在数据库中 HTML 编码存储数据
CodeIgniter 对应措施
esc 函数
验证库
A4 不安全的直接对象引用
不安全的直接对象引用发生在应用程序根据用户提供的输入直接提供对对象的访问时。由于这个漏洞, 攻击者可以绕过授权并直接访问系统中的资源,例如数据库记录或文件。
OWASP 建议
表示层:不公开内部数据;使用随机引用映射
控制器层:从可信源或随机引用映射获取数据
模型层:在更新数据之前验证用户角色
CodeIgniter 对应措施
验证库
易于添加第三方认证
A5 安全配置不当
应用程序架构的不正确配置可能导致错误,这些错误可能危及整个架构的安全。
OWASP 建议
表示层:增强 Web 和应用服务器;使用 HTTP 严格传输安全
控制器层:增强 Web 和应用服务器;保护 XML 堆栈
模型层:增强数据库服务器
CodeIgniter 对应措施
引导期间的正常检查
A6 敏感数据暴露
敏感数据在通过网络传输时必须受到保护。此类数据可以包括用户凭据和信用卡。经验法则是,如果存储的数据必须受到保护,那么在传输过程中也必须受到保护。
OWASP 建议
表示层:使用 TLS 1.2;使用强密码和散列;不要将密钥或散列发送到浏览器
控制器层:使用强密码和散列
模型层:强制与服务器进行加密通信
CodeIgniter 对应措施
会话密钥以加密形式存储
A7 缺少功能级访问控制
敏感数据在通过网络传输时必须受到保护。此类数据可以包括用户凭据和信用卡。经验法则是,如果存储的数据必须受到保护,那么在传输过程中也必须受到保护。
OWASP 建议
表示层:确保非 Web 数据在 Web 根目录之外;验证用户和角色;发送 CSRF 令牌
控制器层:验证用户和角色;验证 CSRF 令牌
模型层:验证角色
CodeIgniter 对应措施
公共文件夹,应用程序和系统在外
安全库 提供 CSRF 验证
A8 跨站请求伪造(CSRF)
CSRF 是一种攻击,它强制最终用户在其当前已认证的 Web 应用程序上执行不需要的操作。
OWASP 建议
表示层:验证用户和角色;发送 CSRF 令牌
控制器层:验证用户和角色;验证 CSRF 令牌
模型层:验证角色
CodeIgniter 对应措施
安全库 提供 CSRF 验证
A9 使用已知漏洞的组件
许多应用程序都有已知的漏洞和已知的攻击策略,可被利用以获得远程控制或利用数据。
OWASP 建议
不要使用这些
CodeIgniter 对应措施
必须审查纳入的第三方库
A10 未验证的重定向和转发
缺陷的业务逻辑或注入的可执行代码可能会不当地重定向用户。
OWASP 建议
表示层:不要使用 URL 重定向;使用随机间接引用
控制器层:不要使用 URL 重定向;使用随机间接引用
模型层:验证角色