2017-06-16 3 views
-1

問題があります。私はフォームの安全性を考えました。私はテキストエリアであるフィールドを持っています。デフォルトでは非表示になっており、リッチテキストエディタが表示されます(CKEditorが役割を果たす場合)。私がしたいことは:HTMLで入力したテキストエリアの安全対策(PHPで処理され、コンテンツはHTMLでなければなりません)(div pと他のタグ付き)

  1. 私はビデオのチュートリアルを投稿している人がいるかもしれないので、iframeは許可しますが、私は他のおそらく有害な情報源からのiframeを望んでいません。
  2. 私はイメージを許可しません(これらの要素にもセキュリティホールがあります)。
  3. 私が最後にかつて心配していたのは、豊富なコンテンツを持つフィールドであるため、SQLインジェクションを防ぐ方法です。

宿題:

  1. 私は(。例えば$ fake_input = $ actual_input)VARの作成について考えました。その後、iframeとyoutubeのリンクが$ actual_inputにpreg_match_allで表示されます。次に、すべてのiframeから$ fake_inputを削除し、YouTubeのリンクを数えます。だから、ストリッピングした後、次のイコライゼーションが有効でなければなりません。それ以外の場合は別のソースからiframeがあります。 $ fake_youtube_links = $ actual_youtube_links - $だから、 をactual_iframes、我々はユーチューブはiframeのうち、リンク、1つの悪質なIFRAMEと、通常の(YouTubeの1)は、それが1 = 1である必要がありiFrameに持っていると言うことができます - 真されていない、2、そ​​のエラー表示されます。
  2. 私は、写真からpreg_replaceを使うことを考えました。
  3. 最後の部分は、これが私が考えた戦略です。ステップ1と同じように$ fake_inputを作成します。コードサンプルを削除します(これは、説明目的のみのものです)。そして、DELETE、ALTER、TRUNCATEなどのMySQL予約語/入力の残りの部分をチェックするためにサンプルをクリーニングした後。

何か助けになるでしょう!

答えて

0

なぜ簡単ではありませんhtmlspecialcharacter()?それを置く前にあなたのデータをデータベースに保存すれば問題はありません。

+0

私は(その機能何)それを見て、エンティティをHTMLにいくつかの「危険な」文字を変換します。私が "ばかげた"質問をするのは申し訳ありませんが、これはSQLインジェクションに対して十分でしょうか?たとえそうであっても、他にどんな危険を冒すべきですか? –

+0

SQLインジェクションを避けるために、準備されたステートメントを使用してください。それ以外の場合は、htmlspecialchars()またはhtmlentities()を使用して任意のhtmlをエンコードする必要があります。 – Andreas

関連する問題