0

登録フォームには、次の4つの入力があります。

username  
password
email address
web address

利用可能なすべての消毒方法からどれが本当に必要かを理解することはできません:

strip_tags()
substr()
mysql_real_escape_string()
trim()
htmlentities()
addslashes()
. . . (you may add more)

どこかで関数がであることがわかりました、どこかでこの関数はまたはmust haveとして宣言されていますdeprecatedless valuable the another one ...

上記の4つの入力すべての優先順位のリストを作成してくれる人がいてくれませんか。

注:PDO - prepared statementsデータベースとの通信にはすでに使用されています。

4

2 に答える 2

7

一言で言えば:

  1. データをデータベースに追加するときは、PDO の準備済みステートメントをプレースホルダーと共に使用します。それだけです。他に何も必要ありません。

  2. HTML ページの任意の場所から何かを出力するときは、 を実行する必要がありますhtmlspecialchars($string, ENT_QUOTES, 'UTF-8');。ここで、$stringは「安全な」方法で出力したい文字列です。

于 2013-01-14T06:18:19.977 に答える
-6

まず、消毒したい帽子について明確にする必要があります。

準備済みのステートメントを使用するため、必要はありません: mysql_real_escape_string()

ユーザーが html を使用することを拒否したい場合は、XSSを回避するために、 strip_tags()を使用する必要があります。

htmlentities()で印刷できない文字を html 表示で保護するに は

パスワードの入力には、 trim()を使用できます 。これは、ユーザーが先頭にスペースを付けてパスワードをコピーすると役立つためです。Outlookはスペースを追加するためです。しかし、パスワードを削除するのは良い考えだと誰もが考えているわけではありません。

テンプレート システムによっては、次のような定義済みの入力値にaddslashes()を使用することをお勧めします 。

<input type="text" value="<?php addslashes($value); ?>" />

次のことが可能になる可能性があるためです。

my value " /><script>evil things</script><

ある種の XSS をオートコンプリート フォームに含めるため。

于 2013-01-14T06:25:04.593 に答える