因此,在我的网站上,我有一个供用户使用的字段,可以设置最多100个字母的个人资料说明。我的问题是他们可以使用html作为他们的个人资料描述!我使用输入作为描述,直接放入mysql数据库。
以下是显示其个人资料说明的代码
<div id="mid-profile-desc">
<p><?php echo $userProfileDesc;?></p>
</div>
<!--String is just this from database: $userProfileDesc = $row["profiledesc"];-->
但是对于这些用户在设置他们的个人资料描述时,他们可以使用诸如html,css,javascript,php&amp; amp;多很多。他们也可以用它控制我的数据库。
那么如何禁止用户使用所有这些?我可能只是禁止“&lt;”和“&gt;”信件,但这可能也不安全。这样做的好方法也是安全的吗?
答案 0 :(得分:2)
当前显示的用户输入没有过滤器。这意味着,虽然人们不能使用PHP代码,但他们可以将任何html标签或javascript插入您的网站,并使用xss攻击。
解决方法是htmlspecialchars
<?php echo htmlspecialchars($userProfileDesc); ?>
在数据库中使用未转义的html通常不是问题,但是你需要担心像sql注入这样的事情。使用参数化查询来避免这些。
答案 1 :(得分:1)
首先:在存储之前使用htmlspecialchars,在输出之前解码。
第二:使用PDO - 语句sql查询。