首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - String Clean

PHP - String Clean
EN

Stack Overflow用户
提问于 2014-07-24 23:07:07
回答 4查看 226关注 0票数 0

我正在为我的网站建立一个评论系统。问题是我想使用HTML编辑器,但不是完全必要的。

我的问题是安全问题。如何保护我保存在数据库中的用户输入?因为我在我的网站上显示了输入,我想防止XSS,SQL注入和其他类似的事情。但我仍然希望我的用户能够写出任何字符。

例如,daniweb使用和HTML编辑器(所见即所得。

我也试过了

代码语言:javascript
复制
function bstring( $value )
{
    $value = htmlentities( $value, ENT_QUOTES );
    $value = strip_tags( $value );
    $value = mysql_real_escape_string( $value );
    return (string)$value;
}
EN

回答 4

Stack Overflow用户

发布于 2014-07-24 23:14:34

如果您使用,则可以使用以下命令:

代码语言:javascript
复制
$mysqli->real_escape_string($value);

SQL字符串中的特殊字符以便在

语句

中使用

票数 0
EN

Stack Overflow用户

发布于 2014-07-24 23:15:29

如果您希望允许用户输入HTML标记,但不允许他使用某些标记,如Scripts,那么您应该实现某种形式的标记白名单。

代码语言:javascript
复制
$allowed_tags = "<b><i><br>"; // Some safe examples
$value = strip_tags( $value, $allowed_tags );

始终知道何时以及为什么要使用哪个过滤器:

  • mysql_real_escape_string -保护你的SQL免受注入-如果没有合适的参数绑定的连接器是used
  • strip_tags时总是需要的-从你的页面上显示的不安全的输出中删除不需要的标签。可以用来对抗XSS攻击-参见above
  • htmlspecialchars - Encode html标签,使它们不再工作。保护不受XSS攻击,但也会删除HTML功能-您不希望这样做,因为您实际上希望用户使用HTML标记

票数 0
EN

Stack Overflow用户

发布于 2014-07-24 23:22:56

htmlentities不提供安全性

您需要在列表后面使用replace去除html,您想要禁止哪些标签,以及您想要允许哪些标签

代码语言:javascript
复制
 function  bstring($str){

    //forbid your tags here
   $forbidden_tags = array('script', 'body', 'html');


   for($i = 0; $i < count($forbidden_tags); $i++){

        $tag = '%<'.$forbidden_tags[$i].'.*?</'.$forbidden_tags[$i].'>%i';

        $result = preg_replace($tag, 'NOT ALLOWED', $str);

   }



   return $result;




 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24937458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档