3. 错误报告和调试

常常犯的一个错误是忘记关闭 PHP 错误和数据库错误报告,这样做是有风险的。在任何一个公开的站点,error_reporting 应该设置为0 ,最多只能设置为 E_ERROR,数据库设置 db_debug 应该设置为 false,基于其他安全考虑,设置不显示出错信息 ini_set('display_errors', 'Off');

在你编码和调试时,应该把 error_reporting 设置为 E_ALL ,并且在把应用程序发布前解决每一个注意和警告。

一种简易的方法是在 application/config/database.php 文件设置 db_debug 的值为一个常量 MP_DB_DEBUG,当网站在运行中,如下设置:

1 ini_set('display_errors''Off');
2 error_reporting(0);
3 define('MP_DB_DEBUG', false); 

在编码和调试中设置为:

1 ini_set('display_errors''On');
2 error_reporting(E_ALL);
3 define('MP_DB_DEBUG', true); 

在接收任何数据到你的程序之前,不管是表单提交的 POST 数据、COOKIE 数据、URI 数据、XML-RPC 数据、还是 SERVER 数组中的数据,我们都推荐你实践下面的三个步骤:

  1. 过滤不良数据.
  2. 验证数据以确保符合正确的类型, 长度, 大小等. (有时这一步骤也可取代第一步骤)
  3. 在提交数据到你的数据库之前将其转换.

关于SQL注入,XSS,以及 CSRF ,你应该先了解它们,再决定是否采用方法来防止它们。可以参考CI手册上的安全指南 以及 输入和安全类。也许最重要的原则是在把数据提交到数据库或文件系统之前检查所有用户的输入。

  • SQL注入。使用 CI 自带的 Active Record 可以解决这个问题。
  • XSS (跨站脚本)。通过设置 $config['global_xss_filtering'] = TRUE; 开启自动过滤POST和COOKIE中的跨站脚本攻击,但需要消耗一些资源。也可以在每次处理POST和COOKIE的时候单独使用,把第二个参数设为TRUE,如 $this->input->post('some_data', TRUE); 表单验证类也提供了 XSS 过滤选项,如 $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
  • CSRF (跨站请求伪造)。CI 2.0 将内置 CSRF 检查,在 Google 上搜索 "CSRF tokens" 学习更多关于在保护表单提交和 URL 链接的知识,在 Ajax 应用方面可以搜索 "double cookie submission" 或 "双提交 cookie"。
  • SPAM (垃圾留言和恶意注册)。通过保护你的邮件表单,评论表单,以及其他各种免费用户提交的数据来防止垃圾信息,一个简单的方法是只允许一个IP/User客户端在一分钟之内只能提交一次,一个比较好的方式是使用 Captcha ,CI2中内置了一个CAPTCHA的辅助函数。

php错误报告和调试相关推荐

  1. Magento调试 - 页面空白,打开错误报告的方法

    问题:Magento页面一片空白 没显示什么东西,无法判断是否程序错误,所以要把错误显示打开使之能调试 解决: 1. 在网站根目录的.htaccess文件里加上 php_flag display_er ...

  2. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 19 章 服务器配置_19.8. 错误报告和日志...

    19.8. 错误报告和日志 19.8.1. 在哪里做日志19.8.2. 什么时候记录日志19.8.3. 记录什么到日志19.8.4. 使用 CSV 格式的日志输出19.8.5. 进程标题 19.8.1 ...

  3. 电脑总是跳出错误报告

    description:  电脑总是跳出错误报告,提示 just-in-time reason: resolution: 实时调试也就是JIT (Just in time).当运行时错误中断了服务器端 ...

  4. [译] APT分析报告:04.Kraken - 新型无文件APT攻击利用Windows错误报告服务逃避检测

    这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助.前文分享了APT组织Fin7 / Carbanak的Tirion恶 ...

  5. Android日志[进阶篇]五-阅读错误报告

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  6. Android日志[进阶篇]四-获取错误报告

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  7. javascript错误处理与调试(转)

    JavaScript 在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑. ECMAScript 第 3 版为了解决这个问题引入了 try...catch 和 throw 语 ...

  8. JavaScript(第二十七天)【错误处理与调试】

    JavaScript在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑.ECMAScript第3版为了解决这个问题引入了try...catch和throw语句以及一些错误类型 ...

  9. 错误处理和调试2 - C++快速入门31

    错误处理和调试2 让编程改变世界 Change the world by program 让函数返回错误代码 这种方式我们已经了然于心,但我们仍有进一步继续讨论的必要. 不知道大家还记不记得很久很久以 ...

最新文章

  1. CenterNet-TensorRT 3D Detection
  2. Tomcat服务器与Eclipse的关联配置
  3. JavaScript事件详解
  4. ubuntu编译mysql源码
  5. Eclipse中Hibernate插件的安装
  6. 自己实现的数值到大写人民币的实现
  7. h5文字垂直居中_PS教程:巧用自由变换,制作折纸文字效果
  8. Delphi 集合和字符串互转
  9. 5步绘制软件开发流程图
  10. 怎么用计算机打出黑人,电脑上怎么打法文
  11. 隐藏的BUG探讨——从“Y2K”问题到“2038”年问题
  12. 《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
  13. python数据逆透视_利用Python实现数据逆透视
  14. 萨缪尔·莫尔斯,一个种族主义画家是如何窃取了电报发明权的呢?
  15. mysql自动备份脚本下载+简单解读
  16. 美通社日历 | 会展及重要事件信息、企业财报发布,节假日备忘(3月15日—3月21日)...
  17. 2021年熔化焊接与热切割报名考试及熔化焊接与热切割最新解析
  18. Python黑马头条推荐系统第四天 TensorFlow框架介绍和深度学习
  19. 核心代码是整个程序吗_你认为3D建模是像程序员一样敲代码吗?你太out了
  20. 计算机图形学-扫描转换直线段-直线方程法-DDA算法-中点算法-OPENGL实现-详解

热门文章

  1. 杰理之连接杰理蓝牙测试盒标志和后台切去蓝牙的使用【篇】
  2. 英文科技论文中的时态和语态问题
  3. 【超好懂的比赛题解】2020ICPC澳门站 个人题解
  4. WDA-FPM-4-用OVP做查询跳转到明细
  5. Linux系统命令查看edid,Linux下得到显示屏参数的方法
  6. 没有项目管理经验,可以参加PMP考试吗?
  7. 深圳有多强?2928家专精特新中小企业 和 2.1万家高新技术企业!
  8. 安徽省软考报名时间成绩查询安徽省教育考试院安徽省人事考试网报名入口
  9. 5、TM4的PD7和PF0解锁问题
  10. 烽火推系统源码,抖音矩阵系统源码,look look 。