C S*_*per 0 .net sql vb.net asp.net
我试图在数据库中插入一个问题,表中的字段为nvarchar(max)(sql server 2008 r2)
代码如下:
Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
gc.ExecuteCommand("insert into QuestionMaster values('" & txtQuestion.Text & "','" & ViewState("ClientID") & "','" & ViewState("KioskID") & "')")
Response.Write("<script type='text/javascript' language='javascript'>alert('Question Added Sucessfully!!!')</script>")
BindGrid()
End Sub
Run Code Online (Sandbox Code Playgroud)
当我插入任何字符串时:
what's your name?
Run Code Online (Sandbox Code Playgroud)
然后它给了我错误:
's'附近的语法不正确.字符串')'后面的未闭合引号.
如果我只是提供字符串:
What is your name?
Run Code Online (Sandbox Code Playgroud)
然后它不会给我错误.
请帮我.
如果可能,您应该使用参数化查询,因为直接将简单的字符串插入到查询中,如您所见,可能会破坏查询.
换句话说,如果文本框包含Paddy O'Rourke,您的查询将变为:
open close what the ?
| | |
insert into QuestionMaster values('Paddy O'Rourke') ...
Run Code Online (Sandbox Code Playgroud)
你可以看到嵌入式'破坏查询的事实.
正如您尚未意识到的那样,它还允许人们对您的数据库执行SQL注入攻击,因为您没有清理输入.
如果由于某种原因,您的商店不允许参数化查询(从您的一条评论中看到),请找另一个工作地点.不,只是开个玩笑,但在这种骨头政策出现的情况下,你需要自己清理输入.
但这充满了危险,我首先会尝试改变这样的政策,毫不含糊地列出所涉及的风险.
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |