0

テキスト領域(id =メッセージ)を読み取ってデータベースに保存しようとしています。問題は、ユーザーがテキストに一重引用符(')を入力すると、以下の両方のコードがそれを処理できないことです。

Request("Message")

また

Replace(Request("Message"),"'","")

両方ともエラーメッセージで失敗します

Security violation occurred
Incorrect value was passed for field "Message"

読むとすぐに失敗するようですRequest("Message")

4

2 に答える 2

0

コマンドオブジェクトを使用して、ユーザーが入力したデータをデータベースに安全に保存する必要があります。

set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandText = "INSERT INTO table(message) VALUES(?)"
cmd.CommandType = 1
recordsAffected = 0
call cmd.Execute(recordsAffected, array(Request("Message")&""))

if recordsAffected <> 1 then
  Response.Write "Something went wrong!"
else
  Response.Write "Data saved!"
end if

上記のコードは、変数connに格納されているデータベースへのオープン接続があることを前提としています。

于 2012-09-25T19:40:17.087 に答える
0

これは、SQLインジェクションから保護するためのホスティングレベルのセキュリティ対策である可能性があります。この場合、唯一の解決策は、ホストに無効にする(そしてこれから自分で保護する)か、フォームの送信時にJavaScriptを追加してアポストロフィを置き換えるかHTMLエンコードするように依頼することです。

これをローカルコンピューターでテストしていますか、それともWebホスティング会社でホストされているサイトでテストしていますか?

于 2012-09-26T11:52:45.727 に答える