-2

我创建了一个网站,用户可以通过输入用户名和密码来创建帐户,如果我创建一个帐户并输入<h1> dan</h1>我的用户名,用户名将作为标题显示在网站上。如果有人要使用 img src 或大量换行符,这可能会导致大量滥用。我如何让浏览器忽略 html 标签,所以如果我要输入<h1> dan</h1>它,它将摆脱 html 或只是将 html 作为常规文本打印出来。

4

7 回答 7

2

已经给出了一些编程语言的各种答案。您可能想在http://www.owasp.org/上阅读底层技术(以及 Web 开发中的其他常见威胁)。

欢迎来到 Web 开发中的安全问题世界

于 2012-12-23T12:35:41.407 回答
1

您所说的称为输入验证。在这个主题上已经做了很多工作,从头开始做这件事从来都不是一个好主意。要记住的最重要的事情是输入验证必须在服务器端完成,因为客户端很容易被操纵。

ESAPI(由 OWASP 提供)是一个用于 Web 安全的开源库,除其他外,您可以进行输入验证,它具有多种语言的实现,包括 PHP 和 Java。如果您有兴趣在 Java 中使用 ESAPI,您可以查看我的博客,我在其中使用 ESAPI 进行输入验证,如果您使用另一种语言,则网络上有示例。

于 2012-12-23T12:37:51.970 回答
0

只需使用 . 输出用户名htmlspecialchars()

执行的翻译是:

  • '&'(和号)变为' &amp;'
  • &quot;当 ENT_NOQUOTES 未设置时,'"'(双引号)变为 ' '。
  • 仅当设置了 ENT_QUOTES 时,“'”(单引号)才变为 ' &#039;'(或)。&apos;
  • '<'(小于)变为' &lt;'
  • '>' (大于)变为 ' &gt;'
于 2012-12-23T12:28:21.980 回答
0

您可以在 PHP中使用strip_tags()函数。

于 2012-12-23T12:29:54.473 回答
0

当您在服务器端代码上创建用户时,也许您可​​以清理 html 标签。

另外:我认为必须在服务器端清除来自客户端的值。

于 2012-12-23T12:30:04.563 回答
0

要么你必须去掉所有的 html 标签,或者 - 更简单 - 用它们的 html 编码替换所有<>字符,&lt;并且&gt;.

于 2012-12-23T12:30:34.050 回答
0

您不能在浏览器中执行此操作,您必须在后端执行此操作。

  1. 识别用户名、密码中允许的字符,无论您要求什么值
  2. 提交表单时 -> 根据您先前定义的模式(在服务器上)验证输入
  3. 在将数据发送到客户端(浏览器)之前转义/编码您的数据,即这样<h1> dan</h1>会变成&lt;h1glt; dan&lt;/h1&gt;
  4. 让自己对一些安全问题以及如何避免它们(如 sql 注入或跨站点脚本)充满信心
于 2012-12-23T12:32:43.757 回答