更具安全性的mysql类ErrorMsg函数-by sodoit

2016-07-07 15:01 来源:www.chinab4c.com 作者:ecshop专家

在ecshop的cls_mysql类里有ErrorMsg函数,该函数在有错误发生的时候会直接显示错误信息到浏览器里,这些信息对sql注入来说是非常重要的,为此,论坛里有兄弟说直接注释掉该函数里的输出语句,但是这样的话有时候调试可能不太方便。应此我稍微改动了下该函数,有错误发生的时候,只提示“Some Errors....pls check log file.”,具体的错误写入data/sql_log/文件夹里:

  1. function ErrorMsg($message = '', $sql = '')
  2. {
  3. echo "Some Errors....pls check log file.";

  4. if(!file_exists(ROOT_PATH.'data/sql_log'))
  5. {
  6. mkdir(ROOT_PATH.'data/sql_log');
  7. }

  8. if ($message)
  9. {
  10. $msg="ECSHOP info\r\n: $message";
  11. }
  12. else
  13. {
  14. $msg="MySQL server error report:\r\n".print_r($this->error_message,true);
  15. }

  16. @file_put_contents(ROOT_PATH.'data/sql_log/'.date('Y-m-d-H-i-s',time()).'.txt',$msg);
  17. exit;
  18. }
复制代码

回答:
这个方法很好哦

支持一下 不过还是觉得注释好用点
其实官方可以考虑在后台控制是否开启显示错误提示!

写入文件,好麻烦啊....遇到FTP的每次要下载打开来看.



麻烦是为了安全,有程序错误一般都是在开发阶段,不是正式的生产环境吧,在生产环境,最好是不要给客户看到具体的错误信息。

写入文件,我觉得一个好处是便于查看程序有没有错误,因为用户看到了错误,不代表你看到了,而且用户看到错误一般不会告诉你你的站有问题的。写入文件我们就可以定期的查看该文件夹,从而发现问题。

新手問題
剛按樓主的方法修改好了
請問要不要在data入開個sql_log檔案, chmod777?

新手問題
剛按樓主的方法修改好了
請問要不要在data入開個sql_log檔案, chmod777?
winnieip2000 发表于 2011-5-16 02:00


是的,要。