IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

安全

共 391 篇文章

IT 2015-01-16 23:54:25 / 累计浏览 2,564

什么才叫有操作性地尊重版权

这篇文章从近期界面、罗辑思维、中国企业家三起引发关注的版权道歉事件切入,深入探讨了数字时代版权的实际操作困境与可能出路。 作者首先厘清了版权(即著作权)的十七项具体权利,并指出其核心在于保护作品而非思想,且财产权可能已从原作者手中转让。文章的核心论证在于:传统版权体系是建立在“内容与介质不可分离”的现实上的,而数字化使得内容复制与传播的成本趋近于零,这导致整个体系的可操作性日益脆弱。在文字领域,严格维权的商业成本极高且效果有限。 对此,作者引用了互联网法律学者劳伦斯·莱斯格的观点,倡导一种更符合互联网精神的“创作共用”(CC)原则,即创作者可自主选择对他人开放部分权利。他以自身实践为例:对自己的文章,他欢迎署名转载,以此促进传播;而对他人的文章,他则坚持注明出处、仅作摘要并链接原文,以示尊重。文章最终主张,在保障人身权的前提下,创作者或许可以对自己“宽松”,对他人“严谨”,因为传播本身才是数字时代的核心要义。

本机暂存
IT 2015-01-14 13:42:39 / 累计浏览 3,364

C语言的整型溢出问题

这篇讲的是C语言中一个常被忽视但极其危险的安全陷阱:整型溢出。作者从“无符号整型溢出有定义(模运算),而有符号整型溢出是未定义行为”这个核心区别出发,拆解了问题的根源。 文章的重点在于揭示溢出带来的真实危害,并用四个具体示例生动说明。例如,一个简单的`while`循环可能因`short`溢出而变成死循环;一次看似安全的内存拷贝检查,会因`int`到`size_t`的隐式类型转换而被绕过,导致缓冲区溢出。更严重的案例直接关联到OpenSSL的Heartbleed漏洞,展示了如何通过精心构造的输入,让`malloc`分配的内存远小于预期,从而引发远程代码执行。 作者还特别提醒了编译器优化带来的“反直觉”行为:编译器在`-O2`等优化级别下,会假定有符号整型不会溢出,从而直接删除你手写的溢出检查代码。这意味着,那些在调试版本下有效的保护措施,可能在发布版本中完全失效,这使得问题更加隐蔽和致命。 整篇文章就像一份简洁的安全编码警示录,它没有停留在理论定义,而是通过剖析编译器行为和真实漏洞,提醒开发者在处理整数时必须如履薄冰,尤其是在涉及内存操作和用户输入的场景中。

本机暂存
IT 2015-01-12 22:50:58 / 累计浏览 3,506

调试利器之tcpdump详解

讲的是网络排查必备的工具tcpdump。文章开篇点明其“dump traffic on a network”的本质——一个功能强大、可扩展的包分析工具,能深入到网络层、协议、端口进行过滤和抓取。 安装部分是这篇文章的一个重点。作者详细拆解了三种途径:最省心的yum命令安装、稍麻烦但直接的rpm包安装,以及最繁琐但能获取最新源码的编译安装。对于源码编译,还贴心地提示了可能遇到的libpcap依赖问题及解决方法,比如需要先安装flex、bison和m4等,这对新手排坑很有帮助。 工具的基本使用也是核心。文章列举了tcpdump纷繁复杂的命令行参数,并对其中常用的选项,如`-A`(ASCII码查看)、`-i`(指定接口)、`-w`(写入文件)等,配合具体命令示例解释了它们在不同场景下的用途。例如,用`-A`参数可以直观看到MySQL通信的SQL语句原文,用`-w`抓包后配合Wireshark分析则能解决更复杂的问题。 整体来看,这篇文章从安装到实战,为初学者搭建了清晰的tcpdump入门路径,强调了它在网络诊断和安全分析中不可替代的作用。

本机暂存
IT 2015-01-11 23:48:18 / 累计浏览 3,382

bash代码注入的安全漏洞

这篇文章深入剖析了2014年被称为“Shellshock”的Bash代码注入漏洞。作者从继“心脏流血”后又一“毁灭级”安全事件切入,详细拆解了漏洞的检测方法与技术原理。核心在于Bash处理环境变量时,会错误地执行函数体定义之外的恶意代码——这个缺陷从Bash 1.14一直延续到4.3版本。 文章不仅解释了CVE-2014-6271和随后被发现修复不彻底的CVE-2014-7169,更关键的是,作者澄清了“该漏洞影响有限”的误解。他指出,只要服务器端应用(如PHP调用系统shell命令)会衍生出Bash子进程,就可能在传递环境变量时被注入恶意指令,这意味着许多现代系统都存在风险。 这不仅仅是对一个历史漏洞的技术复盘,更是对安全观念的提醒:看似底层的工具链漏洞,其冲击力可能远超想象,影响面覆盖了从Web服务到系统管理的广泛场景。

本机暂存
IT 2015-01-05 23:41:09 / 累计浏览 3,408

SSLStrip 的未来 —— HTTPS 前端劫持

这篇文章探讨的是在HTTPS日益普及的今天,传统的中间人攻击工具SSLStrip面临的挑战与进化。作者从后端劫持的局限性出发,指出SSLStrip这类纯流量层的工具在现代Web面前已力不从心,难以处理动态生成的链接、数据包分片以及高昂的性能开销。 核心思路因此转向“前端劫持”。通过向页面注入脚本,利用事件捕获机制(如监听全局点击事件),攻击者可以在用户点击链接的瞬间,临时将HTTPS地址修改为HTTP。这种方法巧妙地绕过了后端的种种问题:只需处理页面首个数据块即可完成渗透,对性能影响极小;同时能应对各种动态添加的链接,甚至表单提交、脚本弹窗和框架页面。文章详细解释了如何通过修改链接的href属性并在下个事件循环中还原,来实现实时且无痕的替换,比传统的DOM扫描轮询方案更为优雅和彻底。 本质上,这篇内容揭示了网络攻击手段随技术栈演进的路径——从粗放的流量篡改,转向更精细、更贴近应用层的前端逻辑操控。对于安全研究人员和前端开发者而言,它清晰地展示了一种新型攻击面的技术原理与实现细节。

本机暂存
IT 2015-01-05 23:38:27 / 累计浏览 2,082

WebView跨源攻击分析

这篇技术分析深入探讨了WebView中的跨源安全问题。作者从浏览器最核心的同源策略(SOP)讲起,通过清晰的表格对比了不同URL是否同源,为后续分析打下基础。 文章重点剖析了Android WebView中与`file://`协议相关的几个关键API配置:`setAllowFileAccess`、`setAllowFileAccessFromFileURLs`和`setAllowUniversalAccessFromFileURLs`。作者通过代码示例和机制解释,揭示了当这些开关设置不当时,恶意网页如何利用`file://`协议绕过同源策略,读取应用沙箱内的任意文件,造成严重的安全风险。文中还提到了不同浏览器对`file://`协议处理的差异,增加了讨论的深度。 对于从事移动端开发或安全研究的读者来说,这篇文章清晰地梳理了WebView配置中那些看似平常却可能致命的开关。理解这些细节,是构建安全WebView应用的基础。

本机暂存
IT 2015-01-05 23:38:22 / 累计浏览 2,583

WebView跨源攻击分析

这篇讲的是WebView安全中一个核心但常被忽视的问题:同源策略在本地文件场景下的边界。 作者龚广从浏览器同源策略的基本原理讲起,用一个清晰的对比表格说明了协议、域名、端口三要素如何共同决定URL的同源性,比如“http://www.360.cn:8088”因端口不同就与基准URL非同源。文章的核心深入到了file协议这个特殊领域:当JavaScript通过http页面加载时,file协议通常被视为非同源以阻止读取本地文件;但当JS本身通过file协议加载时,不同浏览器的处理策略则存在显著差异,这为攻击留下了可能的缝隙。 具体到Android WebView,文章通过示例代码展示了四个关键API设置——从是否允许加载file URL,到是否允许file URL中的JS进行跨域访问。这些配置如同一组开关,开错一个就可能让应用暴露在风险中。文章没有停留在理论,而是将同源策略的复杂边界与移动开发的具体实践结合,揭示了WebView安全配置中那些看似细微、却至关重要的决策点。

本机暂存
IT 2014-12-30 12:20:27 / 累计浏览 10,202

SSL证书的分类(按功能)

这篇文章系统地梳理了SSL证书的六大分类,从最基础的DV域名型证书到企业级的OV、EV增强型证书,再到功能扩展的通配符、多域名及强制加密证书。它清晰地对比了各类证书在验证严格程度、包含信息、颁发周期和价格成本上的核心差异。例如,DV证书仅验证域名所有权,一两小时内即可签发,适合个人或中小网站快速启用加密;而OV和EV证书则需严格的企业身份审查,其中EV证书还会在浏览器地址栏直接显示公司名称,为金融机构等高要求场景提供最高级别的信任标识。对于拥有多个子域名或不同顶级域名的企业,通配符证书和多域名证书则分别提供了“一张证书保护所有子站”和“统一管理多个域名”的高效解决方案。文章不仅解释了技术定义,更通过适用对象的罗列,让读者能根据自身网站的性质、规模和安全需求,快速定位到最合适的证书类型,具有很强的实操参考价值。

本机暂存
IT 2014-12-28 23:46:32 / 累计浏览 2,607

Linux使用curl访问https站点时报错汇总

这篇整理了在使用Linux的curl命令行工具访问HTTPS站点时,几类最常见的证书相关报错及其解决方法。文章指出,问题的根源往往在于不同客户端(如curl、浏览器、Java程序)使用独立的证书库,而Linux的curl默认依赖位于 `/etc/pki/tls/certs/ca-bundle.crt` 的文件。 摘要列举了四种典型情况:遇到“Peer’s Certificate issuer is not recognized”时,多是由于自签名证书未被信任,解决方法是将私有CA的公钥追加到系统证书库中。而“certificate verify failed”错误,则常因本地CA证书库过旧,无法识别新签发的证书,需要下载最新的cacert.pem进行替换或使用系统命令更新。当遇到“unknown message digest algorithm”时,根源在于系统的OpenSSL版本过低,不支持如SHA-256等新算法,升级OpenSSL是必要步骤。 文章最后还对比了Java和PHP处理HTTPS的机制,指出它们拥有自己的证书库(如Java的cacerts),与系统curl的证书库相互独立。整篇文章以实战报错为线索,提供了直接的操作路径,对于解决这类环境配置问题很有参考价值。

本机暂存
IT 2014-12-01 23:20:26 / 累计浏览 1,602

php中assert方法的安全问题

这篇讲的是PHP中`assert`函数的安全隐患。`assert`本是调试利器,当代码中的表达式为假时,它会发出警告而不中断执行,还能通过`ASSERT_CALLBACK`自定义处理逻辑,为调试提供了灵活控制。 然而,作者立刻点明:这种便利在生产环境中可能变成危险。`assert`的真正问题在于它会执行传入的字符串参数。文章通过一个直观的代码示例揭示了风险:若将未经验证的用户输入(`$_GET['func']`)直接拼接到`assert`语句中,攻击者就可能执行任意代码。例如,传入`func=file_put_contents('a.php','恶意内容')`,就会在服务器上创建文件,其危害可能比`eval`更严重。 因此,文章得出的明确结论是:`assert`仅适用于调试阶段。在部署到生产环境前,应当彻底禁用它,或确保其参数完全是可信的内部逻辑,从而杜绝因输入过滤疏忽而导致的严重漏洞。

本机暂存
IT 2014-11-30 23:33:23 / 累计浏览 10,561

初探单点登录 SSO

这篇讲的是单点登录(SSO)的基本原理,并通过淘宝与京东的实例,对比了两种主流实现策略的差异。 文章先阐释了SSO如何解决多产品线下的用户体验问题,即“一次登录,处处通行”。其核心在于认证系统为每个应用颁发“钥匙”(存于Cookie)。关键差异在于应用间如何获取这把钥匙。 作者通过抓包分析揭示了两种路径:淘宝的策略更偏向“后置式”,用户访问聚划算等未登录站点时,通过一系列跳转,由主站(taobao.com)的凭证去认证中心为当前站点领取新凭证。而京东的策略则是“前置式”,用户登录主站(jd.com)后,页面中的JS代码会立即通过JSONP跨域请求,主动为旗下所有子应用预置好登录凭证,实现更无缝的体验。 这种基于实际网络请求的剖析,清晰展示了SSO在“便利性”与“安全流程”之间的权衡,对于理解企业级统一认证架构的设计思路很有启发。

本机暂存
IT 2014-11-28 23:14:05 / 累计浏览 2,861

云存储中的HTTP鉴权算法分析

云存储的安全高度依赖鉴权机制,传统的HTTP基本认证(Base64编码用户密码)因易被截获和反向解析,已无法满足云环境的安全需求。这篇文章对比了两大主流云平台——AWS S3与OpenStack Swift——为解决此问题所采取的不同鉴权路径。 AWS S3采用了基于请求签名的算法。其核心是每次请求时,客户端将请求元信息与私钥(SecretAccessKey)组合,通过SHA256哈希生成一个签名值随请求发送。服务端用同样方法计算签名并比对。即便请求被截获,攻击者也无法反推私钥,且签名与特定请求绑定并有时效性(15分钟),有效防范了密钥泄露和请求重放风险。 相比之下,OpenStack Swift依赖Keystone服务发放的Token。客户端先用账号密码换取一个有效期Token,后续请求都需携带。服务端每次向Keystone验证Token的有效性。这种方式架构更集中,便于多服务共享鉴权。但缺点也明显:Token泄露风险较高,且每次请求都需额外验证,可能带来性能开销,历史上还出现过Token永久有效的Bug。 两者的选择反映了不同的权衡:AWS S3在每次请求层面实现细粒度、高强度的安全;OpenStack Swift则追求服务治理的便捷与统一,但需在Token生命周期和验证效率上做好管控。

本机暂存
IT 2014-11-28 22:20:10 / 累计浏览 3,742

如何获取用户访问过哪些网站

这篇文章探讨的是如何在用户不知情的情况下,间接推断其浏览器历史记录,这在分析用户习惯或竞品时很有价值。直接读取历史或通过Cookie获取是行不通的,但作者介绍了几个巧妙的“曲线救国”技术方案。 最经典的是利用CSS的 `:visited` 伪类。已访问链接默认为紫色,未访问为蓝色,通过JS检测这种颜色差异,理论上就能判断用户是否访问过特定网站。不过,由于隐私安全考量,Chrome、Safari等主流浏览器已修复此漏洞,目前该方案可能只在IE上仍有效。 另一个更前沿的思路来自2013年的黑客大会,利用HTML5的 `requestAnimationFrame` API进行“时间差攻击”。浏览器渲染已访问和未访问的链接时,从数据库查询URL是否存在会有微小的时间差异,通过高精度计时就有可能推断出访问历史。此外,文章还提到了一个未验证的思路:尝试请求网站的 `favicon.ico` 文件,通过缓存命中导致的响应时间差异来辅助判断。 这些方案从不同角度切入,共同揭示了浏览器在历史记录处理上存在的隐私泄露风险,也提醒开发者需持续关注相关安全更新。

本机暂存
IT 2014-11-28 12:47:39 / 累计浏览 2,643

如何安全的Include文件

这篇讲的是PHP开发中一个容易被忽略的陷阱:include外部文件时可能引发的变量污染问题。作者从一个看似简单的调试开关案例出发,揭示了配置文件中的临时变量如何悄悄覆盖主脚本的变量,导致程序行为异常——就像二战时阿登高地被绕过一样,安全之处往往藏着隐患。 文章指出,问题的根因在于include操作时文件内的变量直接进入了当前作用域。作者提供的解决方案很简洁:将include语句包裹在匿名函数中执行,利用函数创建独立的作用域。这种用call_user_func执行闭包来隔离变量作用域的做法,在JavaScript中很常见,但在PHP代码里却很少有人刻意运用。 对于日常编写PHP代码的开发者来说,这个技巧能有效避免因include文件带来的隐蔽bug,尤其在多文件协作或修改第三方配置文件时特别实用。作者通过这个具体场景提醒我们,那些“简单”的基础操作,恰恰需要多一分警惕。

本机暂存
IT 2014-11-27 13:00:25 / 累计浏览 5,363

HTTPS、SSL与数字证书介绍

这篇讲的是HTTPS、SSL与数字证书三者如何协同工作,共同构筑起现代互联网通信的安全基石。作者从安全通信的基本需求出发,清晰地拆解了HTTPS(安全的超文本传输协议)的本质——在HTTP和TCP之间加入一个加密层,而SSL(或其升级版TLS)正是实现这个加密层的关键协议。 文章没有停留在概念罗列,而是深入到了实现机制。它通过一个生动的A与B对话场景,形象地演示了SSL/TLS协议的“握手”过程:如何巧妙地结合非对称加密(用于安全地协商密钥)和对称加密(用于高效地传输数据)来平衡安全性与性能。同时,详细阐述了数字证书的核心作用——它如同网络世界的“身份证”,由权威的证书颁发机构签发,用于验证服务器身份并分发公钥,从而防止中间人攻击。 对于证书的信任链,文章也给出了直观解释:客户端(如浏览器)内置了受信任的根证书列表,只有由这些机构颁发的证书才会被信任。整体而言,这篇文章将抽象的安全概念落到了具体的协议交互与文件验证上,是理解HTTPS工作原理的一篇扎实导读。

本机暂存
IT 2014-11-24 23:37:41 / 累计浏览 4,862

Mac 锁屏的各种方法

从 Windows 转到 Mac 后,一个不起眼但让人头疼的问题浮现:找不到那个顺手的“Win+L”锁屏快捷键。作者从这个切身痛点出发,系统梳理了多种尝试方案,并分析了它们各自的“坑”。 像合上盖子或短按电源键,虽然常见,但它们实际触发的是“睡眠”而非“锁屏”,会导致网络断开、程序中断,与用户安全锁机的初衷相悖。设置触发角虽然可行,但容易误触,体验并不理想。文章详细对比了这两种主流方法的利弊。 最终,作者推荐了一个更可靠的方案:通过“钥匙串访问”在菜单栏添加一个锁形图标,点击即可立即锁定屏幕。这个方法直接、可控,避免了睡眠带来的副作用,也无需担心误操作,算是为 Mac 用户找到了一个安全又便捷的锁屏路径。

本机暂存
IT 2014-11-21 23:18:24 / 累计浏览 2,886

流量劫持 —— 浮层登录框的隐患

这篇技术文章深入剖析了看似“华丽”的网页浮层登录框背后隐藏的安全风险。作者从传统登录跳转模式说起,对比指出,尽管现代浮层登录框通过HTTPS传输数据,但其寄生在HTTP主页面中的特性,使得整个登录过程极易受到XSS注入攻击。更关键的是,文章通过实战演示揭示了它与“缓存投毒”攻击相结合的巨大危害:攻击者只需短暂劫持网络,即可篡改长期缓存的脚本,从而在用户回到安全网络后,仍能悄无声息地替换掉官方登录框,窃取账号密码。 文章的核心结论是,这种交互模式的改变“不可逆”地削弱了用户原有的安全识别习惯。即使网站撤回浮层设计,黑客利用XSS伪造的相似界面仍可能骗取用户信任。最终,作者给出的终极安全建议是全站推进HTTPS,彻底消除攻击面。整个分析过程结合了原理讲解与攻击复现,警示意义明确。

本机暂存
IT 2014-11-21 23:09:56 / 累计浏览 2,243

XSS 前端防火墙 —— 内联事件拦截

传统XSS防御依赖服务端过滤与转义,但漏洞仍频发。这篇文章另辟蹊径,提出了一种部署在用户浏览器端的“前端防火墙”预警方案。 作者的核心思路是将防御逻辑从被动的事后过滤,转向主动的事前拦截。他认为XSS的执行本质是浏览器中的事件触发,因此可以借助DOM事件模型,在攻击代码实际运行前对其进行拦截分析。 文章详细探讨了如何针对“内联事件”这类常见XSS注入点,利用addEventListener的捕获阶段机制,抢先一步执行防御脚本。这套方案不仅能拦截恶意事件,还能实时上报异常信息,让开发团队在漏洞被大规模利用前就收到预警。它把每一个用户的浏览器都变成了一个实时的监控节点,变被动为主动。

本机暂存
IT 2014-11-07 00:05:39 / 累计浏览 3,400

有趣的面试题

这篇讲的是几道经典的算法与逻辑面试题,每道题都藏着巧妙的思维切口。文章通过具体题目拆解,带你看清解题背后的逻辑链条。 例如“药物传递”题考察的是信息与权限的动态传递,通过两次上锁与解锁,利用C的行为规则完成了安全投递;而“25匹马竞速”题则是一个典型的算法优化问题,关键在于通过两轮筛选排除无关选项,将全局排序问题降维为局部竞争。软件公司人员比例题本质是集合运算,硬币游戏题依赖对称策略,切蛋糕题则抓住了“过中心点的直线平分面积”这一几何性质。 这些题目覆盖了逻辑推理、概率统计、算法设计与几何直观,没有炫技的公式堆砌,却处处体现着“把复杂问题分解为可操作步骤”的思维习惯。它们共同指向一个事实:好的技术面试题,往往不在知识的记忆量,而在面对模糊约束时构建解决方案的能力。

本机暂存
IT 2014-11-06 23:58:58 / 累计浏览 1,942

修改 Mac 的 MAC 地址

这篇讲的是如何通过修改 MAC 地址来应对特定的网络管理策略。作者从学校环境下下载资源时,IP 乃至物理网卡 MAC 地址被封禁的常见困境出发,引出了解决这一问题的核心方法:使用一行命令临时更换 Mac 的 Wi-Fi 接口 MAC 地址。文中具体介绍了通过 `ifconfig` 与 `openssl` 命令随机生成并应用新地址的操作,同时点明了苹果在 iOS 8 上引入 MAC 地址随机化功能,用于在公共 Wi-Fi 环境下保护用户隐私的背景。 该方案的巧妙之处在于其极简性与临时性——一行命令即可生效,且无需复杂设置;由于未写入启动项,系统重启后便自动恢复真实地址,这既满足了临时绕过限制的需求,也保证了系统日常使用的纯净与稳定。对于需要在外使用公共网络的用户,作者也顺带提醒了搭配 VPN 的安全建议。

本机暂存