我创建了一个网站,用户可以通过输入用户名和密码来创建帐户,如果我创建了一个帐户并输入<h1> dan</h1>
作为我的用户名,用户名将在网站上显示为标题。如果有人要使用img src或大量的换行符,这可能导致大量滥用。我如何让浏览器忽略html标签,所以如果我要键入<h1> dan</h1>
它要么摆脱html或只是打印出html作为常规文本。
答案 0 :(得分:2)
已经给出了一些编程语言的各种答案。您可能希望在http://www.owasp.org/上阅读有关底层技术(以及Web开发中的其他常见威胁)。
欢迎来到Web开发中的安全问题世界
答案 1 :(得分:1)
您所谈论的内容称为输入验证。关于这个问题已经做了很多工作,从头开始做这个从来都不是一个好主意。要记住的最重要的事情是输入验证必须在服务器端完成,因为客户端可以很容易地被操作。
ESAPI(由OWASP提供)是一个用于Web安全的开源库,除了其他功能之外,它还允许您进行输入验证,它具有多种语言的实现,包括PHP和Java。如果您对使用ESAPI和Java感兴趣,可以查看我使用ESAPI进行输入验证的my blog,如果您使用的是另一种语言,那么Web上就有这些示例。
答案 2 :(得分:0)
只需使用htmlspecialchars()
输出用户名。
执行的翻译是:
- '&安培;' (&符号)变为'
&
'- '“'(双引号)在未设置ENT_NOQUOTES时变为”
只有在设置了ENT_QUOTES时,"
“。- “'”(单引号)才会变为“
'
”(或'
)。- '&LT;' (小于)成为'
<
'- '&GT;' (大于)变为“
>
”
答案 3 :(得分:0)
您可以在PHP中使用strip_tags()功能。
答案 4 :(得分:0)
在服务器端代码上创建用户时,也许可以清理html标记。
此外: 我认为这是必须清理来自服务器端客户端的值。
答案 5 :(得分:0)
要么你必须摆脱所有的html标签,要么 - 更简单 - 用他们的html编码替换所有<
和>
个字符,<
和{{1 }}。
答案 6 :(得分:0)
您无法在浏览器中执行此操作,您必须在后端执行此操作。
<h1> dan</h1>
成为<h1glt; dan</h1>