名站网址导航为大家提供关于数据库教程相关的教程网站知识。
但是假如如果是让您接手一个二等残废的网站,并让您在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么您会非常痛苦,例如我遇到的问题:根据表名和索引获取需要的列名的存储过程
复制具体相关代码 具体相关代码如下:,create proc p_sword_getblcolumn ( @tblName varchar(200), @fromIndex int, @toIndex int, @columnName v
问题1.
老板对您说,以前刚做完网站好好了,没有出现木马,怎么您来了,就会出现木马,先别说了,赶紧解决问题,我彻底无语,但是假如如果争吵,其实证明您和老板一样无知,拿出证据和事实分析来让公司其他稍微懂技术的一起来证明,公司网站被挂马不是您来了的错。
如是我通过网站目录仔细排查将通过fck上传的网马删除并修补fck的上传漏洞并记下了这篇 Fckeditor使用笔记 ,其实很多人都遇到过,也解决过,都是小问题,但是让您老板明白比解决漏洞问题更蛋疼,我那解释的叫一个汗啊,恨不得把公司所有稍微懂点技术的都叫上让他们看什么是大马什么是小马,然后演示怎么上传木马,奶奶的,黑客教程普及啊。
问题2.
网站又出现问题,上次的问题解决了不过两个月,网站又被入侵挂马,如是老板这次再说因为我来了才出问题,立马走人,这就是为什么不能更不懂技术的人硬碰硬,更不能和您的老板来说,说了您又不懂。
但是要命的是网站是以前的技术开发的二等残废,在别个的cms上修改的,我必须保证网站在的开发的同时旧的模块还可以使用,通过逐步更新的具体相关方法将网站底层翻新,但是那么多页面,您很难一个一个去检测那个页面有漏洞,如是写出下面的检测具体相关代码,没想到这么简单的就搞定了,并且可以通过此具体相关方法网站seo优化您的sql。
第一步建立一个sql日志表
复制具体相关代码 具体相关代码如下:
CREATE TABLE [dbo].[my_sqllog](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[hit] [bigint] NULL,
[sqltext] [varchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[paramdetails] [varchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[begintime] [datetime] NULL,
[endtime] [datetime] NULL,
[fromurl] [varchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[ip] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[lastelapsedtime] [bigint] NULL,
CONSTRAINT [PK_my_sqllog] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITh (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
记录sql数据库语句、此sql数据库语句被执行次数,参数及值,记录开始时间,结束时间,来自哪个页面,ip和此条数据库语句执行时间(暂时没用)
第二步在sqlhelper里写记录具体相关代码
两个具体相关方法本来可以写成private的,但是此二等残废的网站其他地方用的别的sqlhelper类,就直接调用此处通过合理网站seo优化的sqlhelper类的具体相关方法了。
具体相关代码1:插入日志
复制具体相关代码 具体相关代码如下:
public static int ExecuteSqlLog(CommandType commandType, string commandText, params DbParameter[] cmdParams)
{
#region 参数处理
string colums = "";
string dbtypes = "";
string values = "";
string paramdetails = "";
if (cmdParams != null && cmdParams.Length > 0)
{
foreach (DbParameter param in cmdParams)
{
if (param == null)
{
continue;
}
colums = param.ParameterName " ";
dbtypes = param.DbType " ";
values = param.Value ";";
}
paramdetails = string.Format(" {0},{1},{2}", colums, dbtypes, values);
}
string fromurl = "";
if (System.Web.httpContext.Current!=null)
{
fromurl = System.Web.httpContext.Current.Request.Url.ToString();
}
// commandText = commandText.Replace("'","‘").Replace(";",";");
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@hit",1),
new SqlParameter("@sqltext",commandText),
new SqlParameter("@paramdetails",paramdetails),
new SqlParameter("@begintime",DateTime.Now),
new SqlParameter("@endtime",DateTime.Now),
new SqlParameter("@fromurl",fromurl),
new SqlParameter("@ip",Web.PressRequest.GetIP()),
new SqlParameter("@lastelapsedtime",0),
};
#endregion
using (DbConnection connection = Factory.CreateConnection())
{
connection.ConnectionString = GetRealConnectionString(commandText);//ConnectionString;
string sql = "";
// 执行DbCommand开始执行命令,并返回结果.
int id =
Utils.TypeConverter.ObjectToInt(ExecuteScalarLog(CommandType.Text,
"select top 1 id from my_sqllog where sqltext=@sqltext",
new SqlParameter("@sqltext", commandText)));
if (id > 0)
{
sql = "update my_sqllog set hit=hit 1,ip=@ip,endtime=@endtime,fromurl=@fromurl whereinsert into my_sqllog(hit,sqltext,paramdetails,begintime,endtime,fromurl,ip,lastelapsedtime) values(@hit,@sqltext,@paramdetails,@begintime,@endtime,@fromurl,@ip,@lastelapsedtime)";
}
// 创建DbCommand开始执行命令,并进行预处理
DbCommand cmd = Factory.CreateCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, connection, (DbTransaction)null, commandType, sql, parameters, out mustCloseConnection);
// 执行DbCommand开始执行命令,并返回结果.
int retval = cmd.ExecuteNonQuery();
// 清除参数,以便再次使用.
cmd.Parameters.Clear();
if (mustCloseConnection)
connection.Close();
return retval;
}
}
具体相关代码2:判断此条sql是否存在
复制具体相关代码 具体相关代码如下:
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。





