这样的情况是被SQL注入吗?

问题描述

我的网站是.net+sql2005的,现在常被注进这样一些内容,​6735831512jgezdj9999​程序上应该怎么处理呢?​这是SQL注入吗?感觉不是一样,我在globle.asax文件里已经加上了网上的防注入的方法的啊?而那些内容正好又是正在我评论表的存内容的字段里,界面就是一个textarea输入框

解决方案

解决方案二:
SQL用参数化语句,一般就难以SQL注入了。你的问题当然也有可能是服务器漏洞,跟你程序无关。
解决方案三:
我的程序也是特的改了那评论的地方为参数化的了还是要发些内容进去
解决方案四:
你看下这些内容数据库里有吗?如有则应该是被sql注入了;如没有则应该是服务器问题。
解决方案五:
上面ID>16的就应该是被搞进去的但它每项内容又都是按我的字段要求来对应上的,搞不懂这到底是不是注入啊
解决方案六:
我靠,我都不敢点,
解决方案七:
引用5楼msdnxgh的回复:

我靠,我都不敢点,

什么?
解决方案八:
StringBuildersql=newStringBuilder("insertintoQT_Pinglun(ID,userID_F,userID_T,tPF,tContent,tTime,tType)");sql.Append("values(@id,@userID_F,@newsID,@pf,@content,@dt,@type)");SqlParameter[]paras={newSqlParameter("@id",SqlDbType.VarChar,4),newSqlParameter("@userID_F",SqlDbType.NVarChar,6),newSqlParameter("@newsID",SqlDbType.VarChar,4),newSqlParameter("@pf",SqlDbType.VarChar,4),newSqlParameter("@content",SqlDbType.Text,10000),newSqlParameter("@dt",SqlDbType.DateTime,8),newSqlParameter("@type",SqlDbType.VarChar,2),};string[]stra={tepID.ToString(),userID_F,newsID,pf.ToString(),content,dt.ToString(),"2",};intj;for(j=0;j<stra.Length;j++){paras[j].Value=stra[j];}stringsqla=sql.ToString();try{SqlHelper.ExecuteNonQuery(sqla,paras);////执行添加数据ScriptManager.RegisterStartupScript(UpdatePanel1,this.GetType(),"消息框","<script>alert('评伦发表成功!\n\n谢谢您对该博文的支持!');</script>",false);this.tcontent.Value="";//局部不刷新pageLoad();}catch(SqlExceptionex){}请问下这断代码是不是已经是参数化的sql语句了?
解决方案九:
不像是注入,应该是通过程序发送HTTP请求直接往你网站上提交数据的,这样的方式可以跳过你客户端的验证的。所以说,客户端验证对于真正不愿遵守规则的人是没用的。
解决方案十:
同意楼上。
解决方案十一:
引用8楼orain的回复:

不像是注入,应该是通过程序发送HTTP请求直接往你网站上提交数据的,这样的方式可以跳过你客户端的验证的。所以说,客户端验证对于真正不愿遵守规则的人是没用的。

如果不是注入而是HTTP直接提交数据的话,应该怎么避免呢?
解决方案十二:
这个很难真正的避免,因为用户提交的是合法的数据。比较常见的是验证码方式,但验证码也可通过程序来识别,不过如果验证码程序写的好,识别率还是不高的。还有通过IP来限制,在限定的时间内如果用户提交的数据超过限制,则暂时不接受该IP来的资料,但IP也是可以伪造的,还有其它一些方法,你可以在网上搜一下。
解决方案十三:
还是要谢谢了
解决方案十四:
操作数据库用参数方式查询的话,把单引号替换成两个单引号,一般就解决问题.
解决方案十五:
引用13楼asdvb的回复:

操作数据库用参数方式查询的话,把单引号替换成两个单引号,一般就解决问题.

参数方式具体是怎么样的啊?我在7楼用的那断代码算是参数化吗?
解决方案:
使用存储过程,再使用参数来进行过滤操作!
解决方案:
引用15楼krenyelang的回复:

使用存储过程,再使用参数来进行过滤操作!

用存储过程的话,要带的参数太多了,感觉更复杂一样
解决方案:
引用16楼qbaozh的回复:

引用15楼krenyelang的回复:使用存储过程,再使用参数来进行过滤操作!用存储过程的话,要带的参数太多了,感觉更复杂一样

你那个已经是参数化储存了,干嘛还用存储过程。一个简单的插入操作,没必要写成存储过程。
解决方案:
限制他的发帖间隔时间,根据IP,也可以加验证码
解决方案:
设置权限
解决方案:
自己检查一下程序的逻辑,为什么会把那些文字内容当作html内容而输出呢?为什么不做HtmlEncode之后才输出呢?
解决方案:
我想你这个程序的设计人员没有对tContent字段到底保存什么有比较恰当的认识,或者是开发人员胡乱使用这个字段。假设是第二种情况(既设计人员懂得tContent字段的使用规范,已经在文档上做了规定)比较好办,那么作为测试人员随便在tContent这个字段放一个html内容,例如“<span>abcd</span>”,然后应该测试到的是:应该在页面上原样显示<span>这样的文字,看不到这样的字那它就是开发人员的Bug了。
解决方案:
引用14楼qbaozh的回复:

参数方式具体是怎么样的啊?我在7楼用的那断代码算是参数化吗?

问题出在基本概念上,不用纠结编程问题,如果你把上述基本概念搞清晰(仔细定义tContent相关数据在表现层到底如何使用)就没有必要防什么“SQL注入”。所谓SQL注入是指一些sql编程的人根本没有正确地sql编程,比如说它写一个程序whereString+"and[字段a]='"+textBox1.Text.Trim()+"'"

这类代码,这个sql就根本没有考虑到textBox1.Text.Trim()之中有单引号的情况。正确地程序应该是whereString+"and[字段a]='"+textBox1.Text.Trim().Replace("'","''")+"'"

当然对于“SQL注入”从技术上来说,过滤字符纯粹是一种奇怪并且多余的做法。因为textBox1.Text.Trim()里边如果有单引号那么你就应该让它正常地录入到数据库中,至于说表现层该不该让用户录入单引号那是另外一个层面的设计问题,跟这里的数据库编程没有关系。而你的情况显然这类设计问题,而不是编程问题。
解决方案:
应该是SP1234说的没有进行HTML编码,会被JS脚本注入,不是SQL注入他还不狠,狠的话来个无限循环你就happy了比如内容为:<script>if(true){alert('评伦发表成功');}</script>

解决方案:
不是吧
解决方案:
那就在服务也加入验证。
解决方案:
应该中了机器人发的消息吧,过滤“重试”,设置发送间隔,封IP
解决方案:
该回复于2011-12-12 09:04:16被版主删除
解决方案:
我点击的网页是你自己的?还是被“伟哥”注入后的
解决方案:
应该是注入,参数化并不一定能防止注入,参数化+不拼sql(包括参数化的sql语句)就比较安全了
解决方案:
该回复于2011-12-14 09:06:55被版主删除
解决方案:
100%是服务器有木马、中毒~!
解决方案:
明显是机器人自动提交或外部提交的。防止这个问题很简单,就是session验证和发贴时加验证码验证。万无一失~~
解决方案:
都说的很好啊,学习了。
解决方案:
又学到一些防注入的经验了,各位都是牛人啊
解决方案:
引用25楼chen_ya_ping的回复:

那就在服务也加入验证。

++

时间: 2024-09-19 15:19:05

这样的情况是被SQL注入吗?的相关文章

SQL注入攻击的原理及其防范措施

攻击 ASP编程门槛很低,新手很容易上路.在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,老手能做到的,新手也能够做到.那么新手与老手就没区别了吗?这里面区别可就大了,只不过外行人很难一眼就看出来罢了.在界面的友好性.运行性能以及网站的安全性方面是新手与老手之间区别的三个集中点.而在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题.用NBSI 2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞,教育网里高校内部机构的一些网站这种漏洞

Black Hat|长亭科技:防SQL注入利器-SQLChop

本文讲的是 Black Hat|长亭科技:防SQL注入利器-SQLChop,当程序过分信任用户的输入,直接将用户的输入与后台的SQL语句拼接在一起并执行时,如果用户输入带有恶意,SQL注入就发生了. 美国当地时间8月5日,国内安全新兴企业长亭科技在黑帽大会的军火库分会场(Arsenal),现场为来自全球各地的安全从业人员进行技术讲解,并演示他们的"无规则SQL注入攻击检测与防御引擎". 结合统计资料和实际情况来看,SQL注入仍然占据互联网威胁安全事件中非常大的比例(接近1/3)而且并没

SQL注入攻击:防御和检查SQL注入的手段

虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施.知彼知己,方可取胜.首先要清楚SQL注入攻击有哪些种类. 观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. SQL注入攻击的种类 知彼知己,方可取胜.首先要清楚SQL注入攻击有哪些种类. 1.没有正确过滤转义字符 在用户的输入没有为转义字符过滤

关于SQL注入的几类错误和产生的原理

对于注入而言,错误提示是极其重要.所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要.本问讨论下关于几类错误和他产生的原理,希望对读者有所帮助. 错误提示主要有逻辑错误和语法错误以及脚本运行错误三类. 一:逻辑错误 简单的例子是1=1 1=2这两个,1=1与1=2页面不同的原理是什么?以$sql = "select * from news where id=$_GET[id]"为例. select * from news where id=

批量替换sqlserver数据库挂马字段并防范sql注入攻击的代码

首先备份数据库,以防不必要的损失.而后对所有被挂马的小于8000字符的varchar字段执行 复制代码 代码如下: update 表名 set 字段名=replace(字段名,'<Script Src=http://c.n%75clear3.com/css/c.js></Script>','') 其中<Script Src=http://c.n%75clear3.com/css/c.js></Script>为挂马字段.执行后挂马字段被清除.但是有部分字段,比

总结了关于PHP xss 和 SQL 注入的问题

漏洞无非这么几类,XSS.sql注入.命令执行.上传漏洞.本地包含.远程包含.权限绕过.信息泄露.cookie伪造.CSRF(跨站请求)等.这些漏洞不仅仅是针对PHP语言的,本文只是简单介绍PHP如何有效防止这些漏洞. 1.xss + sql注入(关于xss攻击详细介绍) 其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤.用PHP写个过滤函数,可由如下所示: $_REQUEST = filter_xss($_REQUEST);

SQL注入的新技巧

技巧 SQL注入的新技巧 来源:黑客基地                表名和字段名的获得 适用情况: 1)数据库是MSSQL 2)连接数据库的只是普通用户 3)不知道ASP源代码 可以进行的攻击 1)对数据内容进行添加,查看,更改 实例: 本文件以 http://www.dy***.com/user/wantpws.asp 为列进行测试攻击. 第一步: 在输入用户名处输入单引号,显示 Microsoft OLE DB Provider for SQL Server 错误 '80040e14'

代码发布!两个小函数让你的ASP程序对SQL注入免疫!

sql|程序|函数|函数 Rem ## 长整数转换 Function toNum(s, default) If IsNumeric(s) and s <> "" then toNum = CLng(s) Else toNum = default End If End Function Rem ## SQL 语句转换 Function toSql(str) If IsNull(str) Then str = "" toSql = replace(str,

php自带的几个防止sql注入的函数

  SQL注入攻击是黑客攻击网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击.SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除. 为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes.(php.ini magic_quotes_gpc).默认情况下开启,如果magic_quotes_gpc选项启用,那么输入的字符