假设我有一个输入值为“test”的文本框。
过滤/清理后(例如FILTER_SANITIZE_STRING),该值将使用"test"
转换为:PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
,相同的值将保存在数据库中,无需进一步更改。
那么,如果我使用utf8编码类型的html文件,我是否必须转义输出? 我想答案是:是的,你需要逃避它!
如果我使用htmlspecialchars();
,则文本将呈现在数据库上,这是一个问题。嗯,根据我的经验,我发现在应用html_entity_decode()
函数后,从数据库中检索的数据将转换为“test”。
这意味着如果我直接在数据库中保存了一些内容,如:
<script type="text/javascript">alert('test')</script>
将作为JavaScript处理。