易截截图软件、单文件、免安装、纯绿色、仅160KB

关于网站SQL注入的问题,以及解决办法


最近发现我们公司的ASP.NET的代码有拼接SQL语句的习惯!这是非常危险的。以下我举例说明一下
例子1:
statement := "SELECT * from users WHERE name = '" + userName + "'; "
将用户名变量(即username)设置为:
a' or 't'='t,此时原始语句发生了变化:
SELECT * from users WHERE name = 'a' OR 't'='t';
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
例子2:
a'; DROP TABLE users; SELECT * from data WHERE name LIKE '%
这就将最终的SQL语句变成下面这个样子:
SELECT * from users WHERE name = 'a'; DROP TABLE users; SELECT * from DATA WHERE name LIKE '%';
将会造成数据库表被删除的严重后果。
所以强烈建议大家停止SQL语句拼接(特别是网站应用),采用带参数化存储过程。
对于已经完成的ASP.NET网站应用,设计修改代码太多的,可以考虑加入如下代码处理一下,避免被严重注入攻击。可以通过在Global.asax.cs文件中添加过滤关键字的方法来实现 防止 sql 注入攻击(sql injection),代码如下。
    ///  <summary>
    /// 当有数据时交时,触发事件
    ///  </summary>
    ///  <param name="sender"> </param>
    ///  <param name="e"> </param>
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        //遍历Post参数,隐藏域除外
        foreach (string i in this.Request.Form)
        {
            if (i == "__VIEWSTATE") continue;
            this.goErr(this.Request.Form.ToString());
        }
        //遍历Get参数。
        foreach (string i in this.Request.QueryString)
        {
            this.goErr(this.Request.QueryString.ToString());
        }
    }
    ///<summary>
    ///SQL注入过


相关文档:

SQL Server和Oracle的常用函数对比

---------数学函数
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) v ......

java将excel单元格数据转换成sql语句

首先要有jxl类库。
程序如下:
import java.io.*;
import jxl.*;
public class ExcelToSql {
  public static void main(String args[])
  {
   try
   {
    Workbook book= Workbook.getWorkbook(new File("D:\\workspaceuse6\\foundation\\test\\com\\gres ......

sql语句查询表的字段名

select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '相应表名')  
用以上sql语句输入相应表名就可以查到表的字段名,对应好数据库 查询是否存在该表语句
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_cost]') and OBJECTPROPER ......

动态SQL(Dynamic SQL)

----start
    动态SQL是在程序运行时构造的,要执行单条SQL,使用EXECUTE IMMEDATE 语句;当批量执行SQL时,先使用PREPARE 语句构造SQL,然后使用EXECUTE 语句执行。
一:Prepare语句:用来构造批量SQL
语法:
PREPARE <sql-statement> [OUTPUT] INTO <result> [INPUT INTO] <input> ......

sql查询优化


1、    用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号