https页面中出现莫名其妙的安全警告

本文描述了一个关于Internet Explorer中HTTPS页面加载大量HTML内容时出现的安全警告问题。该问题仅在HTML内容超过一定阈值时出现,并提供了一种简单但有效的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在IE中访问一个https的页面,这是一个相对比较安全的操作,所以IE会要求这个页面内的所有内容皆来自于安全的域。这时候要是页面中有http的资源,比如图片、脚本、页面(frame或iframe中)等,在IE的默认设置下我们就会得到一个内容安全的警告窗口。而今天遇到的这个警告可以说是莫名其妙到无语。

    原来在IE6下我就做过对https页面的友好支持,IE6似乎比IE7的要求还严格,iframe的src指向about:blank都算是不安全,会弹出下面这个安全警告窗口(IE7中指向这个空白页已经不算不安全了)。

    SecurityInformation.png
    // 这个窗口看得我都要吐了,今天

    经过一天的debug,最后确定了出错的代码和出错场景。代码如下:
None.gifvar span = node.document.createElement('SPAN');
None.gifspan.innerHTML = data;
None.gifchildTreeContent.innerHTML = String.Empty;
None.gifvar tree = span.childNodes[0].childNodes[0];
None.gifif ( tree && tree.rows.length > 0 )
ExpandedBlockStart.gifContractedBlock.gifdot.gif{
InBlock.gif    childTreeContent.appendChild(tree);
InBlock.gif    this.UpdateProfileIcon(tree.rows[0]);
InBlock.gif    var treeview = this.GetTreeView(node);
InBlock.gif    treeview.CheckedNodes = this.GetAllCheckedNodes(treeview);
InBlock.gif    treeview.SelectedNodes = this.GetAllSelectedNodes(treeview);
ExpandedBlockEnd.gif}

    稍加解释,这段代码就是把从服务器段动态取回来的TreeView的子节点添加到树上去。由于子树的html在返回的时候有一个span作为其container,所以我就先把html转成DOM对象,然后取span对象的子对象的子对象。代码第一行的那个span是用来转换html到DOM对象的,第四行就是取出树(子树)对象,然后判断子树是否有节点,如果有就用过childTreeContent.appendChild(tree)添加到TreeView上去。

    结果问题就出在了这最后appendChild()一句上!更郁闷的这个警告窗口还不是执行这段代码就必然出,它还有一个条件,只有当data中的html代码大于一定数量的时候,才会出这个提示。我反复测试,发现这个阈值在15-20k的html代码之间,具体的那个值到底是几何,我实在是没有兴趣去测出来了。也就是说,当子树的html代码小于15k的时候,执行上面的代码,不会有任何警告提示;而当返回的html代码大于20k的时候,就会出那个Security Information的警告窗口@_@。真是要了亲命的说~~~

    解决这个问题的办法似乎也很扯淡,直接对子树节点的innerHTML赋值就行了。。。
None.gifvar treeData = data.substring(data.indexOf('>')+1, data.length-7);
None.gifchildTreeContent.innerHTML = treeData;
None.gifvar childTree = childTreeContent.children(0);
None.gifif ( childTree && childTree.rows.length > 0 )
ExpandedBlockStart.gifContractedBlock.gifdot.gif{
InBlock.gif    this.UpdateProfileIcon(childTree.rows[0]);
InBlock.gif    var treeview = this.GetTreeView(node);
InBlock.gif    treeview.CheckedNodes = this.GetAllCheckedNodes(treeview);
InBlock.gif    treeview.SelectedNodes = this.GetAllSelectedNodes(treeview);
ExpandedBlockEnd.gif}

    // 只是要用substring方法"手工"移掉作为container的span元素。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

<think>好的,我现在需要解决用户的问题:chronyc配置文件未设置时间源,但自动出现时间源的原因及解决方法。首先,我得回忆一下关于Chrony的知识,以及可能的配置机制。 用户提到他们没有在配置文件中设置时间源,但运行chronycsources时却出现了自动生成的时间源。这可能是什么原因呢?根据之前的引用,Chrony的设计目标是高精度和适应性,特别是在不稳定的环境中。引用[4]提到Chrony相比NTP有更好的性能和精度,可能内置了一些默认行为?首先,可能的原因之一是Chrony的默认配置。虽然用户没有手动添加时间源,但Chrony可能在安装时自动添加了默认的NTP服务器。例如,某些Linux发行版在安装Chrony时会预配置一些公共NTP池服务器,比如pool.ntp.org的项目服务器。这会导致即使配置文件没有显式设置,也会出现这些默认源。另一个可能性是DHCP分配。引用[5]提到计算机计时依赖网络时间同步,如果系统通过DHCP获取网络配置,DHCP服务器可能会提供NTP服务器地址。Chrony可能被配置为自动接受DHCP提供的NTP设置,这会导致时间源自动添加,即使配置文件里没有。需要检查DHCP客户端的配置,比如是否启用了“use_ntp”选项。 第三个原因可能是其他配置文件被包含。Chrony的主配置文件通常是/etc/chrony.conf,但有时会包含其他目录下的配置文件。例如,在Debian系中,可能存在/etc/chrony/conf.d/这样的目录,里面可能有额外的配置片段添加了时间源。用户可能没有检查这些目录,导致忽略了实际生效的配置。 此外,Chrony的某些版本或发行版特定设置可能会自动添加备用源。比如,如果系统检测到没有配置任何源,可能会作为fallback添加默认源以确保时间同步,防止系统时间严重偏差。解决方法方面,首先需要检查所有可能的配置文件,包括主配置文件和任何被包含的目录。使用命令`grep -r 'pool\|server'/etc/chrony*`可以搜索所有相关配置。如果发现来自其他文件的配置,删除或注释掉即可。 其次,检查DHCP设置。查看主配置文件中是否有`use_ntp`或`sourcedir`指令,这些可能会引入DHCP提供的NTP服务器。如果有,可以注释掉相关行,并重启Chrony服务。另外,查看Chrony的日志文件,通常是/var/log/chrony/chrony.log,里面可能会记录时间源的来源,帮助确定问题根源。 如果确认配置文件中确实没有时间源,但依然出现,可能需要考虑Chrony的默认行为是否自动添加了源。这时,可以显式配置为禁用所有外部源,并设置本地时钟,或者手动指定所需的时间服务器。 最后,处理步骤包括停止服务、清理配置、禁用DHCP提供的NTP、重启服务,并验证结果。确保在修改配置后使用`systemctl restartchronyd`或相应的命令使配置生效。</think>### Chrony未配置时间源却自动出现的原因及解决方法 #### 一、问题原因分析 1. **默认配置继承** Chrony在安装时可能自动加载了发行版预设的公共NTP池(如`pool.ntp.org`项目),即使未手动配置,也会通过默认配置文件引入时间源[^4]。例如,某些Linux发行版的`/etc/chrony.conf`中默认包含以下配置: ```conf pool 2.debian.pool.ntp.org iburst ``` 2. **DHCP动态分配** 若系统通过DHCP获取网络配置,DHCP服务器可能推送了NTP服务器地址。Chrony默认会通过`use_ntp`指令自动接收这些地址[^5],导致时间源自动出现。可通过以下命令检查是否启用了DHCP同步: ```bash grep 'use_ntp' /etc/chrony.conf ``` 3. **包含其他配置文件** Chrony主配置文件可能通过`include`或`sourcedir`指令引入了其他目录中的配置片段。例如: ```conf sourcedir /etc/chrony.d # 包含该目录下的所有.conf文件 ``` 4. **本地时钟兜底** 若未配置任何时间源,Chrony可能默认启用本地硬件时钟(RTC)作为时间参考源,显示为`^? 127.127.1.1`[^5]。 --- #### 二、解决步骤 1. **检查所有配置文件** 使用以下命令搜索所有可能的时间源定义: ```bash grep -rE '^(pool|server)' /etc/chrony* ``` 若发现无关配置,注释或删除相关行。 2. **禁用DHCP推送的NTP** 在`/etc/chrony.conf`中注释掉以下指令: ```conf #use_ntp #sourcedir /run/chrony-dhcp ``` 3. **清理冗余配置** 若存在包含其他配置文件的指令(如`sourcedir`),检查对应目录并删除多余文件。 4. **强制指定空配置** 显式声明不依赖任何外部时间源,仅使用本地时钟(适用于无网络环境): ```conf # 禁用所有外部时间源 #server 0.pool.ntp.org iburst # 启用本地时钟 local stratum 10 ``` 5. **重启服务并验证** ```bash systemctl stop chronyd chronyd -q 'pool delete' # 清除所有已缓存的时间源 systemctl start chronyd chronyc sources # 应显示"No sources" ``` --- #### 三、相关技术细节 - **Chrony自动适应机制** Chrony设计上会尝试从多种渠道(如配置文件、DHCP、硬件时钟)获取时间源以增强鲁棒性[^3]。若需严格限制,需手动关闭相关功能。 - **日志排查** 查看`/var/log/chrony/chrony.log`,定位时间源加载的具体触发点。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值