2012-02-28 4 views
0

У меня есть строка, которая богата содержание тексталучший способ, чтобы написать это, чтобы избежать содержания HTML

что-то вроде этого, например

<p>Hello</p> 

<br/> 

<p> Christian </p> 

<pre> Don't Know what to do </pre> 

Теперь я хочу не хочу сценарий присутствовать в приведенном выше содержания, и если Настоящая esape это

так Если у меня есть содержание, которые выглядят как этот

<p>Hello</p> 

<br/> 

<p> Christian </p> 
<script type="text/javascript"> alert("Hello")</script> 
<pre> Don't Know what to do </pre> 

Нужно быть заменить

<p>Hello</p> 

<br/> 

<p> Christian </p> 
&lt;script type="text/javascript"&gt; alert("Hello")&lt;/script&gt; 
<pre> Don't Know what to do </pre> 

Я разрабатываемой в настоящее время регулярное выражение для этого

мой код выглядит примерно так

if content.match(/<script(.+?)>/) { 
    content = content.replace(content.match(/<script(.+?)>/)[0],content.match(/<script(.+?)>/)[0].replace("<","&lt;").replace(">","&gt;")) 
} 
if content.match(/<\script\s*>/) 
{ 
content = content.replace(content.match(/<\/script\s*>/)[0],content.match(/<\/script\s*>/)[0].replace("<","&lt;").replace(">","&gt;")) 
} 

поэтому содержание результат будет иметь сценарий тег сбежавшего

Может ли кто-нибудь предложить мне более чистый способ достичь этого?

+0

HTML-sanitisation - непростая задача: см., Например, http://blog.stackoverflow.com/2008/06/safe-html-and-xss/. Я бы рекомендовал по крайней мере посмотреть на другой код, который делает это, прежде чем пытаться написать свой собственный. –

ответ

1

Чистильщик:

content = content.replace(/<(script[^>]*|\/script)>/g, '&lt;$1&gt;'); 

Однако, это, вероятно, не способ пойти об этом. Почему эти теги <script> в строке JS в первую очередь?

+0

Спасибо @jensgram, я использую markitup Богатый текстовый редактор, и я хочу, чтобы тег скрипта был предотвращен. Я знаю или не знаю, вставить или записать их – Viren

0

Не тот ответ, который вы ищете, но что делать, если javascript отключен? Вы хотите, чтобы на странице отображалось неэкранированное содержимое. Надеюсь НЕ

Экранирование должно быть сделано с помощью сценариев на стороне сервера, как PHP, ASP.NET и т.д.

Как и в РНР htmlentities()[docs here] будет делать только штрафом

$escaped = htmlentities($content) 
0

I подумайте, что вам следует избегать этих сторонников caracthers. Например, в PHP вы используете htmlentities

+0

OMG, это так глупо от меня ... писать addlashes() ха-ха. Спасибо за то, что вы дали правильное решение. – Starx

Смежные вопросы