<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>寂静的深海 &#187; Discuz</title>
	<atom:link href="http://www.deepseath.com/?feed=rss2&#038;tag=discuz" rel="self" type="application/rss+xml" />
	<link>http://www.deepseath.com</link>
	<description></description>
	<lastBuildDate>Mon, 29 Jan 2024 09:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>关于SQL注入的监测</title>
		<link>http://www.deepseath.com/?p=977</link>
		<comments>http://www.deepseath.com/?p=977#comments</comments>
		<pubDate>Mon, 26 Sep 2011 15:55:50 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[思路]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=977</guid>
		<description><![CDATA[网站被挂马，有一个方式就是对某个帐号进行提权操作，比如针对非管理用户提权至最高管理员的权限。 事后可以发现被提权的用户帐号，但检查经由哪个文件注入的是个麻烦的事情，特别是针对开源的文件结构比较复杂的程序来说。 以前有个思路，一直未实现，今天处理了一个，是针对Discuz!5.5（很老的一个版本了^^）的，处理思路就是事后诸葛亮。 对于此类的提权操作，其根本原因就是通过SQL去变更待提权的帐号的管理标识，如果程序对于涉及变更帐号权限的SQL查询都能有一个记录的话，这样日后一旦发现有未知的提权操作的时候便会相对容易的发现注入口是什么，大体也能进行应对处理，总比盲目的去查找注入文件要容易一些，当然，这个其实只是“事后诸葛亮”的做法，并不是根本的防御措施，真正想要防御其实还是程序开发的时候多考虑一些，比如，外部的输入要验证数据类型、进行字符转义等等，这不在本文讨论范围。 就Discuz!而言，所有的SQL操作都是经由数据类层进行操作的，这样就提供了一个比较方便的方式，我们可以在数据查询方法中加入一个判断，判断当前进行的操作是否是在更新用户表的权限字段，如果是，则记录下来相关的信息并保存到日志文件内，方便日后查询处理，针对Discuz!5.5我是按照如下的方式处理的，其实其他版本的Discuz!或者Discuz!X乃至其他类似的程序都可以利用这样的方式进行。 针对Discuz!5.5代码如下： &#60;?php /* @ By Deepseath 2011-09-26 @ 记录用户管理权限发生变动时的相关信息 */ if ( preg_match('/UPDATE\s+[`]*'.$GLOBALS['tablepre'].'members[`]*\s+SET(.+)/is',$sql,$match) &#38;amp;&#38;amp; preg_match('/[`]*\s*adminid[`]*\s*=\s*/is',$match[1],$m) ) { //判断当前执行语句是否为members表包含adminid的更新 $sql_md5 = md5($sql);//唯一查询md5值 $logfile = DISCUZ_ROOT.'./forumdata/log_adminid/'.$sql_md5.'.log';//日志储存的文件 if ( !file_exists($logfile) &#124;&#124; time() - filemtime($logfile) &#38;gt; 1800 ) { //如果查询日志文件不存在或者日志文件距离当前时间超过1800秒，则记录查询日志 if ( !is_dir(DISCUZ_ROOT.'./forumdata/log_adminid/') ) { //日志目录不存在则创建 @mkdir(DISCUZ_ROOT.'./forumdata/log_adminid/',0777,true); } if ( $fp = @fopen($logfile,'ab') ) [...]]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=977</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DBCheck build 20080425发布！</title>
		<link>http://www.deepseath.com/?p=175</link>
		<comments>http://www.deepseath.com/?p=175#comments</comments>
		<pubDate>Fri, 25 Apr 2008 07:40:33 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[DBCheck]]></category>
		<category><![CDATA[Deepseath]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[MSNCool]]></category>
		<category><![CDATA[pack]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[升级]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=175</guid>
		<description><![CDATA[之前给客户做的一个小工具，自Discuz!3.1.2以来一直有人使用，因此一直不断得随着Discuz!更新而更新。 本次Discuz!升级到了6.1.0，因此，DBCheck的数据基准校验包(db_pack.php)也随之升级了。 功能上没时间做新的扩展——而且目前觉得也没太大必要，呵呵，这个工具几乎就是一次性的，大家都是为了查看自己的数据结构是否有问题，检查完之后也就不用了^_^ 下载地址还是在“深海(Deepseath)Discuz!风格演示论坛”：http://www.exinqing.net/discuz/viewthread.php?tid=172 至于模板MSNCool过几天再弄，近期事情实在太多了，手里的项目还在继续赶:( 忙过这阵好好弄一下:)]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=175</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>我看UCenter</title>
		<link>http://www.deepseath.com/?p=145</link>
		<comments>http://www.deepseath.com/?p=145#comments</comments>
		<pubDate>Wed, 19 Mar 2008 08:59:46 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[UCenter]]></category>
		<category><![CDATA[开发]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=145</guid>
		<description><![CDATA[　　Discuz!开发了一个类似Facebook的程序“UCenter”，这两天无聊的时候进去玩了会。挺有意思的。 　　转眼离开Discuz!已经两年了，看着它慢慢发展感觉很欣慰，毕竟是自己曾经战斗过的地方。当初离开其实是想自己走条路同时也想更轻松一些，我不是一个有很大理想和抱负的人，就希望有个安稳的生活，有不需要我去写程序就能稳定的生活——写程序太累了。 　　现在自己事业虽然没有大的起色，但也过得差不多，自由一些散漫(哈哈，貌似这是贬义词哦～～)一些。 　　首先，UCenter应该说是个不错的创意——如果没有Facebook在先的话。 　　其次，看不出这个程序是打算自己做运营还是要发布产品，总觉得这类东西发出来，只会让国内更乱，哈哈，大家都是一样的东西，国内原本就是非常非常缺乏创意的了，如果再有这样一个现成的东西，大家会越来越懒，打开网页都是一样的东西，真的很没劲的。如果让我在一个站看到这样的东西，我可能会玩得比较长时间，但是如果很多站都在用，那我绝对不会理会的——没有新意。 　　模仿不是说不好，只是模仿也需要有模仿出来的创意。就UCenter来说， 　　一方面对于成产品期望说实话不太大，盈利模式是什么？广告？那站长买了这个东西靠什么盈利呢？难不成也是广告？没有批评的意思，因为我也希望Discuz!越走越好，毕竟那里有很多战友^_^。 　　另一方面，如果继续做下去，还是希望模仿归模仿更多一些创意，特别是针对国人的创意，比如符合国内网民使用习惯的设计和布局等等。 　　还有一个就是负载上的考虑，当然这是底层技术了，因为没看过数据结构和程序，我始终有点怀疑大流量的个人站是否能承受得起这样的数据库压力。做缓存也是需要很大的I/O开销的哦～～ 　　总之，无论怎样，都是希望这个UCente能继续走下去，走好^_^一如Discuz!论坛一样。 　　有点想念那些战友们啦:) 　　手里的程序写得有点累了，过来瞎胡扯一番，嘿嘿……]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=145</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
