用户可以在其个人资料描述中使用 html、css、javascript、php e.t.c

Users can use html,css,javascript,php e.t.c on their profile description

所以在我的网站上,我有一个用户字段,他们可以在其中设置最多 100 个字母的个人资料描述。我的问题是他们可以使用 html 作为他们的个人资料描述!我使用 a 作为他们描述的输入,并直接放入 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 等语言等等。他们还可以用那个来控制我的数据库。

那么我怎样才能禁止用户使用所有这些呢?我可能只是禁止“<”和“>”字母,但这可能也不安全。有什么好的方法既安全又安全吗?

第一:存储前使用htmlspecialchars,输出前解码

第二种:使用PDO-语句sql查询。

当前显示的用户输入没有过滤器。这意味着,虽然人们不能使用 php 代码,但他们可以将任何 html 标签或 javascript 插入您的网站,并使用 xss 攻击。

解决方案是htmlspecialchars

<?php echo htmlspecialchars($userProfileDesc); ?>

在数据库中使用未转义的 html 通常不是问题,但是您确实需要担心 sql 注入之类的事情。使用参数化查询来避免这些。