在昨天的《使用正确版本的XMLHTTP》中卖了个关子,ServerXMLHTTP的功能比XMLHTTP强大,你现在大概已经猜到了吧。没错,用ServerXMLHTTP可以在HTTP请求头中加入Cookie,而XMLHTTP不可以。
为了方便测试,先写一个回显Cookie的简单的PHP程序:
<?php foreach($_COOKIE as $key => $value) echo "$key => $value\r\n"; ?>
说起XMLHTTP,相信你一定不会陌生,当前大红大紫的AJAX技术的核心所在。我在这里不讨论AJAX,也不讨论JavaScript,而是讨论VBScript。
我枚举了一下,在我的系统(Windows7)中,以下ProgID都可以创建XMLHTTP对象:
Microsoft.XMLHTTP Microsoft.XMLHTTP.1.0 Msxml2.ServerXMLHTTP Msxml2.ServerXMLHTTP.3.0 Msxml2.ServerXMLHTTP.4.0 Msxml2.ServerXMLHTTP.5.0 Msxml2.ServerXMLHTTP.6.0 Msxml2.XMLHTTP Msxml2.XMLHTTP.3.0 Msxml2.XMLHTTP.4.0 Msxml2.XMLHTTP.5.0 Msxml2.XMLHTTP.6.0
不同的版本有什么区别呢?Google告诉你答案:
最近几天看了一下《SQL Injection Attacks and Defense》,并对学校的网站做了一下测试,发现学校的网站真是漏洞百出。同时也发现,在ASP、ASP.NET、JSP、PHP等常见服务端中,PHP中的SQL注入漏洞是最少的(至少我们学校的是这样)。
这也没什么好奇怪的,稍有常识的人都知道,PHP配置文件中有一个magic_quotes_gpc选项,默认为on,会对$_GET、$_POST、$_COOKIE进行addslashes处理,把敏感字符过滤掉。这样,即使是一个没有安全意识的新手写出来的代码,也不太容易出现SQL注入。
所以特意在PHP的C源码中搜索了一下阻碍我SQL注入的“罪魁祸首”addslashes函数的实现。在PHP源码的ext/standard/string.c中,我稍微整理了一下:
(更多…)写一个程序要用到,于是整理了一下。在PHP源码中的ext/standard/string.c中。
写一个程序要用到,于是整理了一下。在PHP源码中的ext/standard/string.c中。