Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户可以在其概要文件描述中使用html、css、javascript、php e.t.c_Php_Html_Css_Mysql_User Profile - Fatal编程技术网

用户可以在其概要文件描述中使用html、css、javascript、php e.t.c

用户可以在其概要文件描述中使用html、css、javascript、php e.t.c,php,html,css,mysql,user-profile,Php,Html,Css,Mysql,User Profile,因此,在我的网站上,我有一个用户字段,用户可以在其中设置最多100个字母的个人资料描述。我的问题是,他们可以使用html来描述他们的个人资料!我使用a作为它们描述的输入,并直接放入mysql数据库 下面是显示其配置文件描述的代码 <div id="mid-profile-desc"> <p><?php echo $userProfileDesc;?></p> </div> <!--String is just this fr

因此,在我的网站上,我有一个用户字段,用户可以在其中设置最多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等语言&更多。他们也可以用它来控制我的数据库

那么我如何才能禁止用户使用所有这些呢?我可能只是禁止使用“”字母,但这也可能不安全。有没有安全的好方法呢?

首先:存储前使用,输出前解码

第二:使用语句sql查询。

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


第二:使用语句sql查询。

当前显示的用户输入不带过滤器。这意味着,尽管人们不能使用php代码,但他们可以在您的网站中插入任何html标记或javascript,并使用xss攻击

解决办法是



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

当前显示的用户输入不带过滤器。这意味着,尽管人们不能使用php代码,但他们可以在您的网站中插入任何html标记或javascript,并使用xss攻击

解决办法是



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

1)请仔细阅读。2) 了解如何清理您的数据,因为您不希望其他人操纵您的网站。了解XSS和HTML转义。您对@HeineforSQL注入有一个答案@HeineforSQL注入我只是使用mysqli_escape_字符串,我已经读过它的工作原理了吗?我确实需要学习更多关于网站安全的知识,因为人们现在可以通过使用个人资料描述直接删除我的整个数据库这一事实真的让我害怕,我现在已经关闭了更改个人资料描述的功能<代码>mysqli_escape_字符串不安全。使用预先准备好的语句和参数绑定是防止一级注入的最安全的方法。1)仔细阅读。2) 了解如何清理您的数据,因为您不希望其他人操纵您的网站。了解XSS和HTML转义。您对@HeineforSQL注入有一个答案@HeineforSQL注入我只是使用mysqli_escape_字符串,我已经读过它的工作原理了吗?我确实需要学习更多关于网站安全的知识,因为人们现在可以通过使用个人资料描述直接删除我的整个数据库这一事实真的让我害怕,我现在已经关闭了更改个人资料描述的功能<代码>mysqli_escape_字符串不安全。使用预先准备好的语句和参数绑定是防止一级注入的最安全的方法。为什么要对输出进行编码?只是为了对这个答案添加一些后续内容。将实现阻止任何html或脚本运行的神奇功能。有关更多信息,请参阅文档。(理想情况下,您应该使用此方法,同时将用户的原始输入存储在数据库中)@FrankerZ htmlspecialchars()在一个encode函数中。这应该用在贝多商店。htmlspecialchars_decode()用于解码输出。哦,我想他们也可以使用php,那么至少没有我想的那么糟糕。我只是用它测试了一下,比如说,嘿,,>或者什么,当我想到它的时候,它就是这么说的,当它不工作的时候,但是谢谢你,我会添加htmlspecialchars并检查它out@LeventeOtta通常,我只针对当前输出目标进行转义。在html进入数据库之前转义它几乎没有什么附加值——数据库不解析html,因此它对一些html标记没有什么可担心的。相反,sql注入可能会损害数据库:为了避免这种情况,我们使用参数化查询。为什么要对输出进行编码?只是为了对这个答案添加一些后续内容。将实现阻止任何html或脚本运行的神奇功能。有关更多信息,请参阅文档。(理想情况下,您应该使用此方法,同时将用户的原始输入存储在数据库中)@FrankerZ htmlspecialchars()在一个encode函数中。这应该用在贝多商店。htmlspecialchars_decode()用于解码输出。哦,我想他们也可以使用php,那么至少没有我想的那么糟糕。我只是用它测试了一下,比如说,嘿,,>或者什么,当我想到它的时候,它就是这么说的,当它不工作的时候,但是谢谢你,我会添加htmlspecialchars并检查它out@LeventeOtta通常,我只针对当前输出目标进行转义。在html进入数据库之前转义它几乎没有什么附加值——数据库不解析html,因此它对一些html标记没有什么可担心的。相反,sql注入可能会损害数据库:为了防止这种情况,我们使用参数化查询。
<?php echo htmlspecialchars($userProfileDesc); ?>