我正在处理用户的个人资料部分 他们可以在textarea中定义几个内容,包括描述(“关于我”),最多400个字符 在此说明中,我想让我的用户使用Font Awesome和Bootstrap图标。我也让他们使用JS标签(但不是PHP标签)。我想这很危险,因此我想知道:
list
这样的功能,但也许还有别的东西。谢谢!
答案 0 :(得分:0)
只要您在保存表单之前逃脱所有标签,我认为这一切都很好。 您可以使用以下功能执行此操作:
function escapeTags(value){
return $('<div/>').text(value).html();
}
例如。以下<script>alert("hello world")</script>
将成为<script>alert("hello world")</script>
。
此外,您只能使用javascript执行此操作:
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
来源: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代码并确定它是否试图做恶意的事情要少。