‘壹’ ASP.NET C# sql参数化
代码没有,倒是可以给你三个建议:
1、使用存储过程,这样就参数化了,可以防止sql语句的非法注入
2、写一个函数,把插入语句的sql中的 ' 字符替换为空:
public static string Filtered(string str)
{
str = str.Replace("'", "");
str = str.Replace("@", "");
str = str.Replace("=", "");
str = str.Replace("!", "");
str = str.Replace(" ", "");
str = str.Replace(".", "");
str = str.Replace("[", "");
str = str.Replace("\\", "");
return str;
}
3.登录的时候将文本框内的内容加密输入数据库。。。
‘贰’ 参数化sql查询语句
使用ADO.NET的parameter来构造查询语句,运行时会自动检查参数类型是否正确,能够有效地防止SQL injection attack
string = "select * from xinxi where id=@param";
‘叁’ sql语句参数化
当然了,你exeDataTablePage的时候只是@sql这个变量。
根本就没把@Idx和@NO进行转换。肯定报错的。
‘肆’ 执行sql语句时参数化,有什么好处
防注入。
比如你登录的语句写成:
string sql="select uid from login where uid='"+uid+"' and pwd='"+pwd+"'";
那只需要把密码写成'or'0'='0就可以登录了
‘伍’ python中的sql参数化,想向sql中传入一组参数,要怎么写
一般的处理思路是将数据库操作的方法放在一个模块中,比如connectsql.py:
import mysqldb
def execnonquery(sql):
conn = mysqldb.connect(host='xxxx',user='xxxx',passwd='xxxx',db='xxxx')
cur = conn.cursor()
cur.execute(sql)
conn.commit()
conn.close()那么你的a.py代码为:
from connectsql import *
def mysql_insert(i,data):
try:
execnonquery('insert into mytest values(%s,%s)' % (i,data))
except:
return 0你的b.py代码不变。
‘陆’ 为什么参数化SQL查询可以防止SQL注入
参数化查询主要做了这些事情:
1:参数过滤
2:执行计划重用
因为参数化查询可以重用执行计划,并且如果重用执行计划的话,SQL所要表达的语义就不会变化,所以就可以防止SQL注入,如果不能重用执行计划,就有可能出现SQL注入,存储过程也是一样的道理,因为可以重用执行计划。
‘柒’ sql参数化查询
既然选择CommandType.Text,就应该将参数替换到sql语句中,不要使用变量了。
cmd.CommandText = string.Format("select * from WSN where factor='{0}' and list='{1}'", factor, list);
‘捌’ sql语句拼凑的怎么改成参数化
你是用什么语言来调用sql的?
一般用法:
select * from table1 where field1=:value1
然后对'value1'这个参数进行赋值。
‘玖’ sql为什么要参数化,怎么参数化
一、最主要是: 数据库 机制问题,参数化 可以加快 执行效率,数据库有个缓存区,可以缓存 非参数部分的语句(或者说 下次执行不用数据库再次 解析语句),而不用参数,每次数据库 都需要解析 语句
二、次要是:防止,sql语句特殊字,注入:减少,字符转义等
三、清晰 便于理解
‘拾’ SQL查询参数化举例
大概是在接受到$posts[age],接着$param=$_POST["age"];
再搜索这个变量里面的值,如果存在某个值就替换掉他。[*]具体你可以参考
http://bbs.cnhonker.com/forum.php?mod=viewthread&tid=5984&extra=page%3D1