|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( " < ", "< ");