私はPHPを初めて使用しますが、これらのことを考えると、最近は本当に混乱しています。
これが私の質問の詳細です:
まず、クライアントとサーバー間でデータを転送する必要があるという状況です。Ajaxは、クライアント側でデータを表示するために使用する必要があります。サーバー側では、PHPとMySQLを使用してリクエストを解析し、データを取得してから送り返します。
次に問題が発生します。ブラウザから送信されるユーザーデータには&、%、'、 "が含まれている可能性があり、フォーマットされたPOSTリクエストが破損したり、データベース攻撃が発生したりする可能性があります。JSを使用してそれらを検出できますが、ユーザーは検証をバイパスしてデータを送信できます。ユーザーにとって役立つ可能性があるため、単純に削除することはできません。
それで、武器ライブラリをチェックしました。サーバー側では、それらを処理するには機能が多すぎることがわかりました。
通常のエクスプレッションとは別に、
htmlspecialchars, htmlspecialchars_decode, addslashes, stripslashes
urlencode, urldecode, mysql_escape_string, mysql_real_escape_string
javascriptを使用するクライアント側では、それほど多くはありませんが、まだ持っています。
escape, unescape
わかった。私がたくさんの武器を持っていることを知ることは良いことですが...それらをどのように選び、組み合わせ、そして使うかは私にとって本当に頭痛の種です。
たとえば、次のような製品名が必要だとします。
'%Hooray%' +&ABC
実生活ではこのような名前の製品はないかもしれませんが、例として使用してみましょう。
&マークはPOSTメッセージを壊します。
+はajax解析に影響を与える可能性があります。
一重引用符でSQLインジェクションが可能になる場合があります。
%マークは問題を引き起こす可能性がありますが、問題が発生するかどうかはわかりません。
ただし、データベースに送信してフェッチした後でも、その名前をまったく同じにしたいのです。つまり、データベース
内の名前は異なっていても、ブラウザでの表示は同じである必要があります。
この質問は少し長すぎるかもしれませんが、誰かが良い経験を共有できることを願っています:これらの関数を使用してユーザー入力文字列を処理する方法は?