0

Google 検索でフォーム フィールドを検証する方法がわかりましたが、既にそれらを作成できます。私の質問は、フォーム フィールドに含めても安全な文字と除外してもよい文字はどれですか? 具体的には、ユーザー名とパスワードです。

簡単な説明でもいいです。

ありがとう。

4

2 に答える 2

1

入力と出力を適切にサニタイズすれば、恐れる必要はありません。

注:サーバー側の言語としてPHPを使用していることを前提としています。

まず、SQLインジェクションのリスクを排除するために、プリペアドステートメントでPDO(または)を使用します。MySQLi

次に、サイトに表示されるものはすべて、 XSS攻撃に対してサニタイズする必要があります(ユーザーがのユーザー名を登録しないようにするため<script>doSomeEvilStuff()</script>)。

基本的には、本当にパラノイアの場合は、ブラックリスト(特定の文字のみを許可する)ではなく、ホワイトリスト(特定の文字のみを許可する)を使用する必要があります。これは、誰かが常にブラックリストをバイパスする方法を見つけるためですが、ホワイトリストをバイパスすることができます。

ユーザー名については、あなたが他の方法で考えている以上のものは必要ない/[a-zA-Z0-9_.\s!$%^&*\-+=]/と思います。いずれにせよ、許可しないでください/[`<>(){}[]]/

于 2012-09-02T17:51:15.903 に答える
1

データ内に含まれることのないすべての文字を除外する必要があります。ユーザー名/パスワードに英数字のみを含める必要がある場合、特殊文字を使用するのは意味があると思いますか?

JAVAまたはPHPの正規表現を見てください。

正規表現の参照テーブルもあります。これも便利です。

使用している言語に関する詳細情報を提供していただければ、さらにサポートできる可能性があります。良い一日を過ごしてください!

[更新]非常に優れ たセキュリティリファレンスと、Webセキュリティ関連のトピックの実際のリファレンスであるOWASPWebサイトがあります。OWASPチートシートを参照してください。

#**Cross-Site Scripting Vulnerabilities?**
#for any programming language, the chars you should reject or handle properly are:
>     <   (     )     [     ]     '     "     ;     :     /     |

#for PHP, tools to handle with care:
strip_tags(), utf8_decode(), htmlspecialchars(), strtr()

#do Positive/Negative filtering
#check Encoding

#**SQL Injection ?**
#etc...

[/アップデート]

于 2012-09-02T06:25:00.157 に答える