小新闻网站,发现每天有内容被写入数据库的某个字段里

秋的红果实 2015-09-29 11:33:32
如标题
这是怎么写进去的,该如何防范?

新闻的标题,内容,发布时间等,放到数据库里,最近发现,每天有内容被写入到存放新闻内容的字段,内容是超链接,含有html标记,新闻上传的接口已经删除了。数据在库里没有加密。
在主页显示新闻的标题,点击标题进入具体内容页面,……show.aspx?bianhao="+server.htmlencode(server.urlencode(id))……,id是数据库主键,在show页面根据id读取数据。只有这里访问了库。

感觉是服务器上有了木马,但不知道在哪里?这类问题纯粹不懂,是我程序的漏洞,还是我的数据库设置有漏洞?
...全文
422 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2015-10-16
  • 打赏
  • 举报
回复
就是SQL注入问题,刚改了后,没有清除净以前写入的东西。感谢大家。
crystal_lz 2015-10-06
  • 打赏
  • 举报
回复
你给出的信息太少了 这种问题 只有现场分析 才能知道是什么问题 你说每天都有数据被写入 那是什么数据? 你的代码又是怎么样的? 被写入数据裤的那张表 在你代码里面都有那些对应着的sql语句? 被写入的数据的字段 的数据 是由用户提交的还是你程序 自己根据情况生成的值?、、
273936269 2015-10-05
  • 打赏
  • 举报
回复
关闭写入权限
cxmcxm 2015-10-04
  • 打赏
  • 举报
回复
有无使用sqlparamter对象传入参数,如果只是字符拼接,别人将参数改为1 delete 表名,不将你的表都删除了,简单的解决方案,数据库再建一只有读权限的用户,用此用户建一新连接,读数据就用此连接去读,没有update,insert,delete,权限,只有select的权限,别人也就动不了你的数据了
秋的红果实 2015-09-30
  • 打赏
  • 举报
回复
问题依旧,不是SQL注入 网站日志看了部分,多数返回200,,正常访问,没看出什么 还有哪些可能
  • 打赏
  • 举报
回复
攻击方式有sql注入,你可以先查下是不是连接在数据里就已经跟内容一起存了,如果是的话,是你没做xss攻击过滤,如果不是的话,就要看你的js是不是被攻击或者劫持了
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
服务端 还有哪些可能?
风吹腚腚凉 2015-09-29
  • 打赏
  • 举报
回复
引用 4 楼 From_TaiWan 的回复:
引用 3 楼 wjfwd2010 的回复:
sql注入呗,这么简单的问题。
怎么注入的,只有读取内容时访问了库,那个参数server.htmlencode(server.urlencode处理过,还能注入吗?
只要有传参的地方就有可能注入, server.htmlencode 是在客户端调用的还是服务器端呢?
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
引用 3 楼 wjfwd2010 的回复:
sql注入呗,这么简单的问题。
怎么注入的,只有读取内容时访问了库,那个参数server.htmlencode(server.urlencode处理过,还能注入吗?
风吹腚腚凉 2015-09-29
  • 打赏
  • 举报
回复
sql注入呗,这么简单的问题。
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
ms sql 2005 知道sql服务器的密码,他也不知道具体数据库和表啊,除非拿到登录我服务器的权限了?我用的是独立服务器
全栈极简 2015-09-29
  • 打赏
  • 举报
回复
什么数据库,改数据库密码试试。
ajianchina 2015-09-29
  • 打赏
  • 举报
回复
这个是自己写的,并不是什么拦截,类似于监听的类型,当然以这样的连接请求会返回给对方一个简单的提示,然后停止输出,做一下记录,以便分析。这还是5年前的一个代码了,实现这个功能我没什么稀奇的,我是按照我网站的URL规律,如果不在此范围内记录下来,要知道这些基本上不是来干正事的访问。
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
引用 12 楼 ajianchina 的回复:
我的一个站的后台,拦截的扫描记录,给你参考参考,看看这些家伙都是用什么样的字符串在扫描
真是用尽心思啊,谁能想到这些。你用的什么拦截工具,专用软件还是哪款防火墙?服务器用什么杀毒、防火墙最好,推荐下
Poopaye 2015-09-29
  • 打赏
  • 举报
回复
小新闻网站。。不会是你自己的代码写进去的自己不知道吧
ajianchina 2015-09-29
  • 打赏
  • 举报
回复
我的一个站的后台,拦截的扫描记录,给你参考参考,看看这些家伙都是用什么样的字符串在扫描
江南小鱼 2015-09-29
  • 打赏
  • 举报
回复
没那么高深吧,哥觉得你这说被sql注入了。
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
引用 9 楼 ajianchina 的回复:
跟你说吧,你这是被广告软件扫出了你的sql漏洞,被注入利用了,让你给人家做广告呢,不是数据库问题,是你的sql语句里接收的参数变量未对其进行过滤检查,看看类似这样的过滤:

/sl过滤关键字   
public static bool CheckKeyWord(string sWord)
{
	//过滤关键字
	string StrKeyWord = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
	//过滤关键字符
	string StrRegex = @"[-|;|,|/|\(|\)|\[|\]|}|{|%|\@|*|!|']";
	if (Regex.IsMatch(sWord, StrKeyWord, RegexOptions.IgnoreCase) || Regex.IsMatch(sWord, StrRegex))
		return true;
	return false;
}
我对那个传递的参数做了sql防注入,我是把关键字(还有脚本的)都放到数据库检索的,你的正则更简单,学习了。等明天看看能不能解决问题吧。 select * from myTable where ID=传入的参数,这个参数在where的后面,攻击者写了什么语句能达到那个效果,我突然想到:攻击者要是先转码(如将OR写成'OR ',后面加了空格,后来再用T-SQL的rtrim()),然后提交到服务器,此时我们的关键字里没有'OR ’啊,这样是过滤不住的。不知道有这种猜想没有,假如有,那么用什么方法可以接近100%的杜绝SQL注入
ajianchina 2015-09-29
  • 打赏
  • 举报
回复
跟你说吧,你这是被广告软件扫出了你的sql漏洞,被注入利用了,让你给人家做广告呢,不是数据库问题,是你的sql语句里接收的参数变量未对其进行过滤检查,看看类似这样的过滤:

/sl过滤关键字   
public static bool CheckKeyWord(string sWord)
{
	//过滤关键字
	string StrKeyWord = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
	//过滤关键字符
	string StrRegex = @"[-|;|,|/|\(|\)|\[|\]|}|{|%|\@|*|!|']";
	if (Regex.IsMatch(sWord, StrKeyWord, RegexOptions.IgnoreCase) || Regex.IsMatch(sWord, StrRegex))
		return true;
	return false;
}
秋的红果实 2015-09-29
  • 打赏
  • 举报
回复
js劫持还没听说过。其他至少听说过,简单用过。 按照上楼说的正在逐项检查 类似站点安全问题,除了上面说的,还有哪些情况?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧