什么是HTML textarea危险?

时间:2015-06-08 07:05:06

标签: javascript html textarea

我正在处理用户的个人资料部分 他们可以在textarea中定义几个内容,包括描述(“关于我”),最多400个字符 在此说明中,我想让我的用户使用Font AwesomeBootstrap图标。我也让他们使用JS标签(但不是PHP标签)。我想这很危险,因此我想知道:

  • 让人们使用JS标签危险吗?我知道我必须阻止像list这样的功能,但也许还有别的东西。
  • JS或jQuery中是否存在阻止包含JS或PHP代码的字符串的函数?
  • 是否允许人们使用对我的网站有危险的HTML标记和属性?

谢谢!

2 个答案:

答案 0 :(得分:0)

只要您在保存表单之前逃脱所有标签,我认为这一切都很好。 您可以使用以下功能执行此操作:

function escapeTags(value){
    return $('<div/>').text(value).html();
}

例如。以下<script>alert("hello world")</script>将成为&lt;script&gt;alert("hello world")&lt;/script&gt;

此外,您只能使用javascript执行此操作:

function htmlEntities(str) {
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}

来源:https://css-tricks.com/snippets/javascript/htmlentities-for-javascript/ ...如果您看一下评论,那么还有一个函数可以反转我的escapeTags函数

// Encode/decode htmlentities
    function krEncodeEntities(s){
        return $j("<div/>").text(s).html();
    }
    function krDencodeEntities(s){
        return $j("<div/>").html(s).text();
    }

答案 1 :(得分:0)

是的,它实际上非常危险,只能在一组非常有限的“标签”或函数调用中使用。

存在多个类似bbcode的系统来解决这些问题。我建议实施其中之一。

它们更容易验证,并且向它们添加新功能相当容易。

它应该比验证实际的js和php代码并确定它是否试图做恶意的事情要少。