sql="select title,id,UpdateTime from files"
sql=sql &" where  contains(Content,'"&title& "') and checked=1" 
用的是全文检索,title是输入的关键字,请问各位高手,这样能被sql注入攻击吗?

解决方案 »

  1.   

    把title中的单引号换成两个单引号就好了!存储过程也是这么处理!
      

  2.   

    肯定可以
    用SqlParameter,不要拼接sql语句
      

  3.   

    可以
    用Command 来执行SQL语句可以避免注入式攻击
      

  4.   

    用sqlparameter,存储过程,不要拼接sql语句
      

  5.   

    理論上是
    Allen Kuo 说:
    view.aspx?id=5
    Allen Kuo 说:
    對吧
    webboy 说:
    是这样的
    Allen Kuo 说:
    那麼,我會寫成
    Allen Kuo 说:
    int ID = GetParam("ID", -1 )
    sql= "select * from news where newsid=" + ID
    Allen Kuo 说:
    理論上,若id是傳入非數字,我的GetParam會傳回 -1
    webboy 说:
    那textbox 中呢?是采用验证输入?Allen Kuo 说:
    ?
    Allen Kuo 说:
    不太懂您的意思
    webboy 说:
    用textbox输入的内容,怎么处理。Allen Kuo 说:
    例如,輸入查詢的條件
    Allen Kuo 说:
    如果輸入
    ' --select....
    是嗎
    webboy 说:
    del
    webboy 说:
    delete ……
    Allen Kuo 说:
    ';delete from xxx
    Allen Kuo 说:
    是嗎
    webboy 说:
    是啊
    Allen Kuo 说:
    理論上,我的code會是
    Allen Kuo 说:
    string txt = this.txt1.Text;
    sql="select * from xxx where keyword =" + toSQLT( txt);
    Allen Kuo 说:
    而toSQLT(),會將單引號置換成二個單引號
    Allen Kuo 说:
    並在前後加入一個單引號
    Allen Kuo 说:
    所以
    Allen Kuo 说:
    sql最後會變成
    webboy 说:
    是的,好办法。
    Allen Kuo 说:
    select * from xxx where keyword='';delete...'
    Allen Kuo 说:
     
    Allen Kuo 说:
    asp也是如此做的