« 用 mod_rewirte 解决 referer 攻击 | Main | mrtg 的加和等计算绘图 v.s. RRD 的加和等计算绘图 »
June 10, 2006
squid 的内容替换
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。 https://windtear.net/archives/2006/06/10/001003.html http://windtear.net/archives/2006/06/10/001003.html squid 的内容替换 上个月遇到的问题,问题的提出比较搞笑 不过据说伟大的金盾也会替换两端的数据 确实还是有意思的 原理就是把用户的请求改了给服务器 再把服务器的返回改了给用户 修改 src/client_side.c 发回用户的时候: /* * accepts chunk of a http message in buf, parses prefix, filters headers and * such, writes processed message to the client's socket */ static void clientSendMoreData(void *data, char *buf, ssize_t size) 替换 buf 就行了(buf & mb.buf) strstr 匹配上给出指针位置 然后strncpy覆盖相关内容 然后 comm_write(fd, buf, size, clientWriteBodyComplete, http, NULL); comm_write_mbuf(fd, mb, clientWriteComplete, http); /* * parseHttpRequest() * * Returns * NULL on error or incomplete request * a clientHttpRequest structure on success */ static clientHttpRequest * parseHttpRequest(ConnStateData * conn, method_t * method_p, int *status, char **prefix_p, size_t * req_line_sz_p) 替换 conn->in.buf 完成用户请求的替换 |
Posted by windtear at June 10, 2006 11:31 PM