|M| 学了几天的存储过程最后发现竟然没有什么用 晕
本来我想用存储过程来做查询的
但最好发现在存储过程中拼合查询语句也没有办法防止用户输入如
‘这样的字符出错
晕
顺便问一下,如何能够不用转掉用户的输入如 ' --> ' '
而SQL能够正常查询呢
注:这里主要用来做查询的
可以查我的贴 %|M|%存储过程%
谢谢
[解决办法]
这么晚 8J该抢不到沙发了..
[解决办法]
哈,高歌~
不知道 LZ 怎么拼的SQL,
只有使用参数,才可以不用手动转化,防止sql 注入
[解决办法]
听得一头雾水
[解决办法]
路过
[解决办法]
用正则来过滤用户输入
[解决办法]
走了
[解决办法]
各有各用处!
[解决办法]
听得一头雾水
[解决办法]
先收藏,顺便接分
再留个msn:mingyeh1979@hotmail.com
以后多多交流
[解决办法]
使用sql转义
[解决办法]
最大的好处 就是防注入。。~
[解决办法]
存储过程可以减少网络流量,提高性能
[解决办法]
amandag(高歌)
Jinglecat(晓风残月)
zyciis287()
你们几位都不睡觉的吗?
[解决办法]
。。。啊,谁说存储过程没用的,我跟谁急~
[解决办法]
楼主,是你的查询语句有问题吧
[解决办法]
本来用存储过程的好处之一就是防止用户sql注入,结果lz还是用拼字符串的方法写存储过程。
本人不会存储过程,但是绝对知道这个很有用。
[解决办法]
程序问题吧!
[解决办法]
对于 直接的 传递字符 存储过程的 调用 是可以 有效的防止 ' 这样的注入的.
ado.net在处理的时候 实际会替换成 ' '
但是 对于拼接的字符串
楼主还是需要 自己 替换
比如使用 下面的函数
/// <summary>
/// 过滤html
/// </summary>
/// <param name= "text "> </param>
/// <returns> </returns>
public static string FilterSQL(string text)
{
string validSql = " ";
if (text != null)
{
text = text.Replace( "\ " ", "" ");
text = text.Replace( "; ", " ");
//text = text.Replace( " ' ", " ' ' ");
// text = text.Replace( "-- ", " ' '-- ' ' ");
text = text.Replace( "%25 ", " ");
text = text.Replace( "%0a ", " ");
text = text.Replace( "%22 ", " ");
text = text.Replace( "%27 ", " ");
text = text.Replace( "%5c ", " ");
text = text.Replace( "%2f ", " ");
text = text.Replace( "%3c ", " ");
text = text.Replace( "%3e ", " ");
text = text.Replace( "%26 ", " ");
text = text.Replace( " < ", "< ");
text = text.Replace( "> ", "> ");
validSql = text;
}
return validSql;
}