兴平市住房和城乡建设局门户网站,专业的网站设计网络,手表网站免费设计,绿色资源网下载Overview 在调用 error_reporting() 过程中#xff0c;程序可能会显示系统数据或调试信息。由 error_reporting() 揭示的信息有助于攻击者制定攻击计划。
Details
当系统数据或调试信息通过套接字或网络连接使程序流向远程机器时#xff0c;就会发生外部信息泄露。
示例 1…Overview 在调用 error_reporting() 过程中程序可能会显示系统数据或调试信息。由 error_reporting() 揭示的信息有助于攻击者制定攻击计划。
Details
当系统数据或调试信息通过套接字或网络连接使程序流向远程机器时就会发生外部信息泄露。
示例 1以下代码会将一个异常写入 HTTP 响应
?php echo Server error! Printing the backtrace;
debug_print_backtrace(); ?
依据这一系统配置该信息可转储到控制台写入日志文件或者显示给远程用户。例如凭借脚本机制可以轻松将输出信息从“标准错误”或“标准输出”重定向至文件或其他程序。或者运行程序的系统可能具有将日志发送至远程设备的远程日志记录系统例如“syslog”服务器。在开发过程中您无法知道此信息最终可能显示的位置。
在某些情况下该错误消息会告诉攻击者该系统易遭受的确切攻击类型。例如数据库错误消息可以揭示应用程序容易受到 SQL Injection 攻击。其他错误消息可以揭示有关该系统的更多间接线索。在Example 1 中泄露的信息可能会暗示有关操作系统类型、系统上安装了哪些应用程序以及管理员在配置程序时采取了哪些保护措施的信息。
Recommendations
编写错误消息时始终要牢记安全性。在编码的过程中尽量避免使用繁复的消息提倡使用简短的错误消息。限制生成与存储繁复的输出数据可帮助管理员和程序员诊断问题。调试踪迹有时可能出现在不明显的位置例如嵌入在错误页 HTML 的注释中。 即便是并未揭示栈踪迹或数据库转储的简短错误消息也有可能帮助攻击者发起攻击。例如Access Denied拒绝访问消息可以揭示系统中存在一个文件或用户。