0

私はhtmlエディタを持っていて、それが生成したhtmlをデータベースに挿入してから、SQLテーブルがある別のページでそれを取得しようとしています。asp 3.5 で 1 つのテキスト フィールドを持つテーブルを使用しています。コードは次のとおりです。

MySqlConnection con = new MySqlConnection(@"Connection String  ");//I've tested the connection string and its working fine

MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES ('" + Editor1.Content + "')", con);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

これは私が得るエラーです:

SQL 構文にエラーがあります。near 'font-size: 18pt; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。行の高さ: 115%; font-family: "arial","sans-serif";'>Whatever' at line 1

これはどのように行うことができますか?前もって感謝します。

4

3 に答える 3

2

代わりにパラメーター化されたクエリを使用する必要があり、ユーザーのデータ入力を決して信頼しないでtesください。

于 2011-04-19T10:33:54.437 に答える
0

このようなものが機能する可能性があります:

MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES (@text)", con);

cmd.Parameters.Add("@text", SqlDbType.Text);
cmd.Parameters["@text"].Value = txtTextField.Text;

con.Open();
cmd.ExecuteNonQuery();
con.Close();
于 2011-04-19T10:42:55.140 に答える
0

そして、多くの SQL インジェクションに身をさらすことになります。ユーザーからのデータは、最終的にデータベースに格納される前に常にチェックおよびサニタイズする必要があります。

さらに、ASP.NET を使用すると、フレームワークがブラウザーからの HTML インジェクションの可能性をチェックするため、ポストバックから HTML タグを削除する必要があります。

タグを削除して (または を などに置き換えて)、サーバーに変換し直した後、次の<よう&lt;なものを使用できます。

MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES ('" + Editor1.Content.Replace("'", "''") + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

ただし、パラメータ化されたクエリを作成する必要があります。

于 2011-04-19T10:35:45.590 に答える