定一個查詢語句,在窗體上放一個text控件。
"select * from table where field='" + text1.text + "'"
我這樣定的,現在的用戶太歷害了,他即然來個,在編輯框中輸入:
' delete from table select ',靠,即然把一個表中的數據全部刪除。後面我想到一個辦法,在text1編輯框中的數據,要是有'字符的,變成兩個',這樣解決了,哈哈,用戶輸入'就當成'字符來處理了,但是用戶又提出來了,原來可以在編輯框中輸入"你好" and 字段=....... or 字段=.......
現在我是把整個text1.text當成一個字符串,當然那樣沒用,我該怎麼辦。我要去跳樓了。

解决方案 »

  1.   

    判断有没有关键字 delete,update等,要是没有,就执行老代码,
    否则执行你改过后的新代码
      

  2.   

    判断假如Text中有敏感字符的就不允许执行
    如delete,update,truncate等
      

  3.   

    好牛B的用户啊:)1 你可以在数据库端限制数据库用户的权限,不允许修改只能select
    2 你可以用filter
    3 你可以用3个输入:让用户字段/判断类型(< > =)/判断值,然后自己组织sql 语句
      

  4.   

    用filte是個好主意,但是我們是執行的SQL語句。
      

  5.   

    要是用戶isnull(字段,''),這怎麼來組啊,難啦。
      

  6.   

    灵活性带来的肯定是安全性的隐患,如果你想要isnull等更多的功能要么你用方法1,对这个查询另用一个connection和用户,只有数据库读取权限;要么用方法3,自己写代码模拟实现:)
      

  7.   

    但是存在and or 怎麼辦啦