将textarea保存在数据库中

Wil*_*m N 0 php

我一直在寻找这个,但我找不到最重要的部分 - 使用什么领域.

我想保存textarea而不允许任何类型的JavaScript,HTML或PHP.

在将其保存到数据库中之前,我应该通过发布的textarea运行哪些函数?我应该在数据库中使用哪种字段类型?这将是一个描述,最多1000个字符.

Goa*_*444 5

删除/处理代码有很多方法可以保存在数据库中.

常用表达

一种方法(但可能很难且不可靠)是使用正则表达式删除/检测代码.

例如,以下内容使用php代码删除所有脚本标记(取自此处):

$mystring = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $mystring)
Run Code Online (Sandbox Code Playgroud)

stip_tags PHP函数

您还可以使用内置的stip_tags函数,该函数从字符串中删除 HTML和PHP标记.本手册提供了几个示例,下面显示了一个示例,以方便您:

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>
Run Code Online (Sandbox Code Playgroud)

HTML净化器

您可以查看HTML Purifier,它是一个用于检测和删除危险代码的常见HTML过滤器PHP库.

在他们的入门部分找到简单的代码:

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
Run Code Online (Sandbox Code Playgroud)

在实践中(安全输出)

如果您试图避免XSS攻击或注入攻击,那么清理用户数据是错误的方法.删除标签并非100%保证您的服务免受这些攻击.因此,实际上,通常不会过滤/清除包含代码的用户数据,而是在输出期间进行转义.更具体地说,字符串中的特殊字符是转义的,其中这些字符基于语言的语法.这方面的一个例子是利用PHP的htmlspecialchars函数将特殊字符转换为各自的HTML实体.手册中的代码片段如下所示:

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>
Run Code Online (Sandbox Code Playgroud)

有关转义的更多信息以及与您的问题相关的非常好的解释,请查看此页面.它向您展示了其他形式的输出转义.此外,有关转义的问题和答案,请单击此处.

此外,一个更短,但VITAL点我想在你扔的是,任何从用户接收到的数据CAN NOT信任.

SQL注入攻击

定义(从这里)

SQL注入攻击包括通过从客户端到应用程序的输入数据插入或"注入"SQL查询.成功的SQL注入攻击可以从数据库读取敏感数据,修改数据库数据(插入/更新/删除),对数据库执行管理操作(如关闭DBMS),恢复DBMS文件中存在的给定文件的内容系统并在某些情况下向操作系统发出命令.

对于SQL注入攻击:在将信息存储到数据库时使用预准备语句和参数化查询.(此处可找到问答)可以在此处找到使用PDO准备好的语句教程.

跨站点脚本(XSS)

定义(从这里):

跨站点脚本攻击是一种注入问题,其中恶意脚本被注入到其他良性和可信赖的网站中.当攻击者使用Web应用程序将恶意代码(通常以浏览器端脚本的形式)发送给不同的最终用户时,就会发生跨站点脚本(XSS)攻击.

我个人喜欢这张图片以便更好地理解.

在此输入图像描述

对于XSS攻击:您应该查阅这个着名的页面,该页面按规则描述需要完成的操作.