当前位置:  开发笔记 > 编程语言 > 正文

经过十六进制清理后,HTML数据超出了字段长度

如何解决《经过十六进制清理后,HTML数据超出了字段长度》经验,为你挑选了1个好方法。

问题是你无法真正告诉用户字段中允许有多少字符,因为转义值显然比未转义字符具有更多字符.

我看到一些解决方案,但没有一个看起来很好:

每个领域一个白名单(工作太多,并没有完全解决问题)

每个字段的一个黑名单(与上面相同)

使用可以保存数据的字段长度,即使所有字符都被转义(坏)

取消隐藏数据库字段的大小(更糟)

保存十六进制数据并完全将责任传递给输出过滤(不是很好)

让用户猜出最大尺寸(最差)

还有其他选择吗?这种情况有"最佳做法"吗?

示例代码:

$string = 'javascript:alert("hello!");';
echo strlen($string);
// outputs 27
$escaped_string = filter_var('javascript:alert("hello!");', FILTER_SANITIZE_ENCODED);
echo strlen($escaped_string);
// outputs 41

如果数据库字段的长度为40,则转义的数据将不适合.



1> Peter Bought..:

不要围绕数据库构建应用程序 - 为应用程序构建数据库!

设计您希望界面首先为用户工作的方式,计算出最长的可接受字段长度,然后使用它.

通常,在存储到数据库之前不要转义 - 将原始数据存储在数据库中并格式化以供显示.如果要输出多次,则存储已处理的版本.

记住磁盘空间相对便宜 - 不要浪费太多努力使数据库紧凑.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有