2012-01-06 9 views
-2

私はXSSについて教えるための簡単なプロジェクトに取り組んでいます。 <script>alert\(\'[\[email protected]#$%^&*()-=+]+\'\);</script>しかし、私はPHPでそれを実装しようとしたとき、私はそれはそれは私の文字列にマッチすると言う正規表現のツールでそれをしようとしたとき、私はまだエラーを取得:私は細工 <script>alert('anything')</script>;正規表現xss

をキャッチする正規表現を作成しようとしています。

誰でも正規表現を作成する方法を知っていますか?

おかげ

+3

どの意味で作業していますか?保護を提供するか、あなたが保護されているという誤った感覚を与えますか? – hakre

+1

@NeverHopeless:本当に[tag:regex-php]タグが必要だと思ったら、それを追加してください。しかし、[tag:regex]タグを削除しないでください!そして、同じことが[tag:regex-asp.net]と、あなたが作成しようとしている他のフレーバー/プラットフォームと同じです。このような掃引と破壊的な変更は、最初にピアレビューのいくつかの種類を通過する必要があります。 –

+0

@AlanMoore、ok。 regexタグのこれらの質問をロールバックする必要がありますか? – NeverHopeless

答えて

2

私はあなたの式の中で文字の一部をエスケープされていないので、それがあると思います。

^ [ . $ { * (\ +) | +) < > 

のように:次のメタ文字は、正規表現でエスケープすることになっている

/\<script\>.*\<\/script\>;/ 

:正規表現を使用して

\^ \[ \. \$ \{ \* \(\\ \+ \) \| \+ \) \< \> 
+0

はい、ありがとうございます。/アラート\( "[\ w!@#$%^&* \(\) - = +] +" \); \ <\/script\>/'作品 –

+3

これはあなたの最初の質問であるようですあなたのニーズに最適な答えを受け入れることをお勧めします。ありがとうございます –

+0

このページでは、回答を受け入れる方法を示しています:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

2

されていない私は、次の正規表現は、あなたのために働くべきだと思いますクロスサイトスクリプティングから保護する方法。

そうする効果的な手段がいくつかあります。 This articleでは、最も基本的な保護方法について説明しています。通常、ユーザがどのような種類の入力を提供すべきかを知っておき、それを検証したり、予期しない入力を拒否したり、フィルタをかけるためにFilter拡張子を使用する必要があります。

他のより良い解決策は、Reddit.comやGitHubなどのWebサイトで使用されている人気のあるMarkdownなどの代替マークアップシステムを選択する代わりに、HTML入力を完全に禁止することです。

入力検証に正規表現を使用することを提案することで、「間違ったトラック」で教育している正規表現を設定しています。

+0

あなたは明らかに正しいです。あなたが私の質問を読んだら、私はそれを守ろうとしていないと思っています。あなたが読んだことは、あなた自身の前提です。 –

+0

あなたは「XSSについて教えている」と言ってあなたの質問に先立っています。その後、正規表現を使用してスクリプト要素をどのように一致させるかについて尋ねると、XSSからこのように保護しようとしていると推測するのは貧弱な推論ではありません。 HTMLで正規表現を使用しようとするべきではありません。 – FrozenFire

+1

あなたに同意しないのは、 "トローリング"ではありません。あなたは質問をしました。答えがあなたの前提を批判するので、あなたは失礼になっています。クロスサイトスクリプティングの教授には、正規表現を使用する必要はありません。すべての人の中で、私は知っているべきです。私はHackThisSite.orgをしばらく走った。 – FrozenFire