iT邦幫忙

0

請教不建議使用單引號算常態作法嗎?

有遇到一個小問題,ERP的欄位因為單引號的關係,建檔時可以匯入新增,但無法修改。廠商已經回覆,但想知道這是常態嗎?還是其實可以請工程師克服。

ERP客服
您好~由於單引號在SQL資料庫中為下語法的符號之一,因此會跳出訊息,那因為匯入時是強制寫入欄位,系統無法做邏輯的判斷,但是如果是修改再存檔時,系統就會做欄位的邏輯判斷,因此會導致無法存檔

/images/emoticon/emoticon06.gif「這樣是有單引號的品名都不能修改的意思嗎?」

ERP客服
我們比較建議避開特殊符號的輸入

(補充:這套是Delphi寫的)

大概是轉換成跳脫字元的過程有問題吧...
3CBrian iT邦新手 1 級 ‧ 2018-10-18 16:39:41 檢舉
不知是哪一家ERP?我們公司的ERP廠商也是Delphi寫的,有些中文字也會有顯示的問題,這一點是無法解決的。
拍謝,哪家就不好意思公開,怕客服來找我認親

中文字顯示也是問題,會變問號,問號就無解
倒是前人用unicode補完造成的空格,有用N前置跟Nvarchar,去轉換回來

1 個回答

3
77012904
iT邦新手 3 級 ‧ 2018-10-18 18:25:55
最佳解答

請教不建議使用單引號算常態作法嗎?

絕對不是常態,有人叫你不要這樣用引號,就代表他們的系統是異常的.

會寫程式的就知道,這完全是程式的問題而已。估計大概是新增匯入的時候,是用SQL Parameter的方式傳參數,update的時候卻偷懶只用字串去組Query String,而造成問題.

而通常這樣的問題之所以改不了,是因為那間公司不願意面對歷史共業、導致這種有問題的程式碼存在整個系統中的各個角落。

ERP客服
您好~由於單引號在SQL資料庫中為下語法的符號之一,因此會跳出訊息,那因為匯入時是強制寫入欄位,系統無法做邏輯的判斷,但是如果是修改再存檔時,系統就會做欄位的邏輯判斷,因此會導致無法存檔

不曉得是哪間ERP的公司,但我建議你們可以換掉了.

這是嚴重的資訊安全問題!

哪天你們雇用到一個稍微懂一點的員工,他可以輕易把你們的資料庫搞得亂七八糟,而且用的工具只是你們ERP系統本身提供的 匯入/新增 + 查詢 資料的功能而已

小魚 iT邦大師 1 級 ‧ 2018-10-18 19:44:31 檢舉

你是說傳說中的 SQL Injection 嗎?

謝謝回覆,會再跟廠商溝通

棉花 iT邦新手 4 級 ‧ 2018-10-19 14:50:27 檢舉

最近趕案子太累 不知不覺開始打瞌睡

夢裡我接手維護一個案子 裡面有個程式允許user自己輸入SQL撈資料
程式都是用sa權限去連DB
秉持著實驗精神 我在測試環境下輸入drop database master
按下執行......我就驚醒了

我要發表回答

立即登入回答