
C#でSELECT文を使った簡単な構文を組み立てているのですがエラーになります。
変数を使わず、構文をべた書きするとエラーにはならないため、変数の箇所の組み方だと思うのですが、どこが良くないのか気付けず困っています。
よろしくお願いいたします。
ーーSQL構文ーー
string input1;
string sql;
string source = @"DB接続の情報";
SqlConnection conn = new SqlConnection(source);
conn.Open();
sql = "select カラム名 from TBL名 where カラム名='" + input1 + "'";
SqlCommand cmd = new SqlCommand(sql,conn);
SqlDataReader reader = cmd.ExecuteReader();
:
ーーーーーーーー
画面にはテキストボックスと実行ボタンを配置しています。
input1はテキストボックスに入力した値を取得します。
例えば、TEST11とテキストボックスに入力し、実行ボタンを押下すると、
[SqlException(0x80131904): ’TEST11’ 付近に不適切な構文があります]
というエラーになります。
テキストボックスから値をとらず、直前で
input1 = "TEST11";
として実行した場合や、下記のようにsqlにべた書きした場合はエラーが起こりません。
sql = "select カラム名 from TBL名 where カラム名='TEST11'";
変数で構文を組み立てたときにエラーが起こるため、テキストボックスから取得した
値に何か見えないコードのようなものがついてきているのでしょうか。
すみませんがよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
ご提示のソースには SQL インジェクションの脆弱性があります
https://www.ipa.go.jp/security/vuln/websecurity- …
根本的解決のために、「SQL文の組み立ては全てプレースホルダで実装する」修正を加えましょう。
参考) C# のプレースホルダ実装方法
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
この修正を行えば、構文エラーも解消すると思います。
回答ありがとうございます。
ご紹介いただいた「プレースホルダ実装方法」を参照し、組み立て部分に実装したらエラーが解消されました。
脆弱性の解決もしていただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
'modify' 付近に不適切な構文があります。
SQL Server
-
テーブル名を[]でくくらないとエラーになってしまう
SQL Server
-
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
-
4
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
5
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
6
SQLServer2005のSQL文での別名の取り扱い
SQL Server
-
7
SUBSTRING 関数に渡した長さのパラメータが無効です。
SQL Server
-
8
実行時エラー 3265「要求された名前、または序数
Visual Basic(VBA)
-
9
GROUP BYでエラーが発生
SQL Server
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
列名XXXXが無効です
SQL Server
-
12
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
13
ストアドのエラーについて
SQL Server
-
14
列名に変数を使うことはできないのでしょうか?
SQL Server
-
15
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
16
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
17
SQLServerで文字列の末尾からある位置で取出
SQL Server
-
18
VB6+SQL サーバー 2000 で 実行時エラー '3704' がでます:
Visual Basic(VBA)
-
19
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
20
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
バッチファイルからのBCP起動に...
-
nvarchar型で指定して文字列幅...
-
ACCESS2000ディスクまたはネッ...
-
Oracle 8i コンマ(,)を含むデ...
-
PL/SQLのコンパイル
-
クエリの存在チェック
-
SQL ServerのSQL実行時のエラー...
-
ACCESS ADOでupdateが効かない
-
PostgreSqlでFunctionの作成に...
-
エラー:823 重大度:24 状態...
-
エクセルマクロで指定範囲内の...
-
Access Excelへ出力時にエラー
-
エクセルからSQLサーバー ...
-
GROUP BYでエラーが発生
-
oracle パッケージの仕様?
-
SQL Loaderを使いたい
-
SQLサーバー接続 特定のPCがWin...
-
SQL2000Serverにアクセスするの...
-
SQL ServerにTCP/IPで接続出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
何も表示されない実行時エラー...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
エクセルのグループボックス枠...
-
オブジェクト名 '<table>' が無...
-
エクセルマクロで指定範囲内の...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
SQLServer・ストアドプロシージ...
-
クエリの存在チェック
-
分散トランザクションを開始で...
おすすめ情報