-3

以前は、この方法を使用しhtmlspecialchars($x)て HTML タグとテキストフィールドの SQLi を防止していました。しかし、一重引用符 " ' ( ) はデータベースでいくらかのスペースを占めるため、それを防ぐ最善の方法ではないことに気付きました。また、最大長についても同様です。長さは 1000 文字ですが、シンボルを使用して最大長 (1000 文字) まで使用すると、サーバーで検証するため、ユーザーに問題が発生する可能性があります。

例: ユーザーが 1000 文字を入力すると、それ以上入力できなくなります。約 30 文字がシンボルです。そのため、検証時に 1000 文字を超えて表示され、検証されません。

私ははっきりしていましたか?これらの両方の問題をどのように防ぐことができますか?

ありがとうございます。

4

2 に答える 2

3

「SQLi」が「SQL インジェクション」であると仮定すると、クエリからはまったくhtmlspecialchars保護されません。 表示のみに使用してください。入力がストレージ用に適切にサニタイズされるように、クエリを適切にパラメータ化する必要があります。htmlspecialchars

  1. ユーザーがフォームを送信
  2. 生の入力が有効な場合は、ユーザー入力を使用してパラメーター化された準備済みクエリを実行します
  3. ユーザー ビュー ページ
  4. 生の入力を選択します
  5. htmlspecialcharsユーザーに送り返す前に入力で使用します
于 2013-04-01T21:37:52.537 に答える
0

Google+ のように、htmlspecialchars() を使用してデータを保存することもできます。モバイル デバイスhttps://plus.google.com/app/basic/s?q=Developing+%22Web%22+Sitesを使用してモバイルでこれを表示し、下にスクロールしてみてください。& などのエンティティ名があります。また、<meta charset="ISO-8859-1"> を Web サイトの文字セットとして使用して、</div> などの HTML タグ コメントを回避し、スタイルを破壊することもできます。そのため、サイトが XSS に対して脆弱である可能性があります。したがって、htmlspecialchars() を使用してデータを保存してください。真のコーダーとして、常に mysql_real_escape_string() を使用して MySQL 入力をチェックし、Sequel Injection Attack を回避してください。これらを確認してください: http://evilzone.org/tutorials/sql-injection/および www.w3schools.com/php/func_mysql_real_escape_string.asp

于 2013-04-01T23:00:14.803 に答える