だから私は、準備された SQL ステートメントを使い始めるように上司に教えようとするプロジェクトを持っていますが、彼はあまり気にせず、大したことではないと言います。それが大したことであることを彼に証明する方法を知りたいのですが、セットアップした開発テストサーバーにドロップテーブルコマンドを挿入する方法がわかりません. テスト段階にある会社向けのアプリケーションを開発しましたが、その会社の SQL コードを使用しているため、それを削除して (バックアップを取って) 問題を彼に提示したいと考えています。私は会社にプリペアド ステートメントを使用する習慣をつけさせようとしていますが、変更を望んでいるのは私だけのようで、彼らはそうしません。このデータベースを SQL インジェクションで「クラック」するのを手伝ってくれる人はいますか? ありがとう!!
送信するフォームにはコメント ボックスがあり、アポストロフィが表示されるとエラーがスローされます。
クエリを作成できません:SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、78 行目の 's";', '100', '100')' 付近で使用する正しい構文を確認してください。
私はもう試した
foo'); DROP TABLE cabletypes;--
しかし、同じエラーが発生します。フォームを送信する前にテキストエリアに入力しているときに、正常に挿入するにはどうすればよいですか? テキストエリアは「コメント」列と値に送信されます。
SQL
$sql="INSERT INTO cabletypes
(cable_type,
sample_no,
sample_date,
section_lg,
wet_dry,
avgofppf,
sheath_type,
plastic_wt,
inner_sheath,
inner_al_wt,
inner_steel_wt,
cable_guard,
guard_al_wt,
guard_steel_wt,
guard_other_wt,
total_pairs_a,
pair_count_gauge_a,
copper_wt_a,
total_pairs_b,
pair_count_gauge_b,
copper_wt_b,
total_pairs_c,
pair_count_gauge_c,
copper_wt_c,
total_pairs_d,
pair_count_gauge_d,
copper_wt_d,
sum_pairs,
copper_wt,
copper_percent,
lead_wt,
lead_percent,
contains_lead,
waste_wt,
sampler,
supervisor,
comments,
cable_no,
section_no)
VALUES (
'$cable_type',
'$sample_no',
'$sample_date',
'$section_lg',
'$wet_dry',
'$avgofppf',
'$sheath_type',
'$plastic_wt',
'$inner_sheath',
'$inner_al_wt',
'$inner_steel_wt',
'$cable_guard',
'$guard_al_wt',
'$guard_steel_wt',
'$guard_other_wt',
'$total_pairs_a',
'$pair_count_gauge_a',
'$copper_wt_a',
'$total_pairs_b',
'$pair_count_gauge_b',
'$copper_wt_b',
'$total_pairs_c',
'$pair_count_gauge_c',
'$copper_wt_c',
'$total_pairs_d',
'$pair_count_gauge_d',
'$copper_wt_d',
'$sum_pairs',
'$copper_wt',
'$copper_percent',
'$lead_wt',
'$lead_percent',
0,
'$waste_wt',
'$sampler',
'$supervisor',
'$comments',
'$cable_no',
'$section_no')";
}
mysql_query($sql) or die ("Unable to Make Query:" . mysql_error());
print("Sample Sheet Submitted Successfully!");