我应该htmlentities用strip_tags吗?
我目前正在使用strip_tags添加到数据库并考虑删除htmlentities输出; 我希望在服务器上生成HTML时避免不必要的处理.
仅在strip_tags没有允许标签的情况下使用是否安全?
Nik*_*kiC 14
第一:只在您需要时立即使用转义方法.即如果你在数据库中插入一些东西,只能为数据库转义它,即应用mysql_real_escape_string(或者PDO->quote你正在使用的任何数据库层).但是还没有为输出应用任何转义.没有strip_tags或类似的.这是因为您可能希望在其他地方使用存储在数据库中的数据,其中HTML转义不是必需的,但只会使文本变得丑陋.
第二:你不应该使用strip_tags.它完全删除了标签.即用户没有得到他输入的相同输出.而是使用htmlspecialchars.它将为用户提供相同的输出,但会使其无害.
nic*_*ckf 10
strip_tags 将删除所有HTML标记:
"<b>foo</b><i>bar</i>" --> "foobar"
Run Code Online (Sandbox Code Playgroud)
htmlentities 将编码HTML中特殊字符的字符
"a & b" --> "a & b"
"<b>foo</b>" --> "<b>foo</b>"
Run Code Online (Sandbox Code Playgroud)
如果您使用htmlentities,那么当您将字符串输出到浏览器时,用户应该在输入文本时看到文本,而不是HTML
echo htmlentities("<b>foo</b>");
Run Code Online (Sandbox Code Playgroud)
视觉上导致:<b> foo </ b>
echo strip_tags("<b>foo</b>");
Run Code Online (Sandbox Code Playgroud)
结果:foo
| 归档时间: |
|
| 查看次数: |
22133 次 |
| 最近记录: |