-3

之前,我使用该方法htmlspecialchars($x)来防止 HTML 标记和一些 SQLi 在文本字段上。但我注意到这不是防止它的最佳方法,因为单引号 "' () 在数据库上占用了一些空间。此外,对于最大长度。例如,在文本字段上,我将 max-长度为 1000 个字符。但如果人们使用 simbols 并一直到最大长度(1000 个字符),用户会遇到一些麻烦,因为我在服务器上验证它。

示例:用户输入了 1000 个字符,但他不能再输入了。大约 30 个字符是符号。因此,在验证时,它将显示超过 1000 个字符并且不会验证它。

我清楚了吗?我怎样才能防止这两个问题?

提前致谢。

4

2 回答 2

3

假设“SQLi”是“SQL 注入”,那么htmlspecialchars根本不会保护您免受查询影响。 htmlspecialchars应该只用于显示。您需要正确参数化查询,以便对输入进行适当的存储处理。

  1. 用户提交表单
  2. 如果原始输入有效,则使用用户输入运行参数化准备查询
  3. 用户浏览页面
  4. 您选择原始输入
  5. htmlspecialchars在将输入发送回用户之前使用
于 2013-04-01T21:37:52.537 回答
0

您还可以使用 htmlspecialchars() 来存储数据,例如 Google+。尝试使用移动设备https://plus.google.com/app/basic/s?q=Developing+%22Web%22+Sites在移动设备中查看此内容并向下滚动。有一个实体名称,例如 & 您还可以使用 <meta charset="ISO-8859-1"> 作为您网站的字符集,以避免像 </div> 这样的 HTML 标记注释,从而破坏您的样式。也许您的网站因此容易受到 XSS 的攻击。所以,使用 htmlspecialchars() 来存储数据!作为一个真正的程序员,始终使用 mysql_real_escape_string() 检查 MySQL 输入以避免 Sequel Injection Attack。检查这些:http : //evilzone.org/tutorials/sql-injection/ 和 www.w3schools.com/php/func_mysql_real_escape_string.asp

于 2013-04-01T23:00:14.803 回答