php - 我需要做什么来清理 textarea 中的数据以提供给 mysql 数据库?

标签 php mysql html

好吧,标题就是我的问题。在使用 php 进入 mysql 数据库之前,任何人都可以给我一份清理数据的 list ,尤其是当数据包含 html 标签时?

最佳答案

这取决于很多事情。如果你不想接受任何 HTML,这会让它变得更容易,通过 strip_tags() 运行它首先从中删除所有 HTML。之后就安全多了。如果你确实想接受一些 HTML,你可以使用相同的功能有选择地保留一些标签,只需在标签中添加要保留的标签即可。例如:strip_tags($string_to_sanitize, '<p><div>'); // Keeps only <p> and <div> tags .

至于插入数据库,最好在插入数据库之前清理任何东西;采取“不要相信任何人”的心态会给你省去很多麻烦。防止 SQL 注入(inject)相当简单,这是我使用的方法:

$q = sprintf("INSERT INTO table_name (string_field, int_field) VALUES ('%s', %d);",
             mysql_real_escape_string($values['string']),
             mysql_real_escape_string($values['number']));

$result = mysql_query($q, $connection)

通常,一旦您打开了允许 HTML 进入的大门,您就会有一大堆事情需要担心(那里有一些关于防御 XSS 的很棒的文章)。如果您想测试 XSS 漏洞,请尝试 http://ha.ckers.org/xss.html 上的示例.他们那里有一些你可能永远不会考虑的东西,所以看看吧!

此外,如果您接受特定类型的输入(例如:数字、电子邮件、 bool 值),请尝试使用内置的 filter_var() PHP 中的函数。他们有一堆内置类型来验证数据 ( http://www.php.net/manual/en/filter.filters.validate.php ),以及一些过滤器来清理你的数据 ( http://www.php.net/manual/en/filter.filters.sanitize.php )。

一般来说,接受任何输入就像打开潘多拉魔盒,虽然您可能永远无法阻止 100% 的弱点(人们总是想找到办法),但您可以阻止常见的弱点免得您头疼。

最后记得清理所有外部数据。仅仅因为您进行了下拉输入并不意味着某些阴暗的人不能发送他们自己的数据!

关于php - 我需要做什么来清理 textarea 中的数据以提供给 mysql 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066980/

相关文章:

javascript - not in jquery 选择器的用法

设置 css 属性 grid-template-columns 和 grid-template-rows 的 Javascript

javascript - 如何在php中调用具有相同div名称的脚本函数?

php - MySQL 查询两个值之间的限制

php - 避免垃圾邮件 - Android 应用程序

mysql - 如何将 shapefile 插入 MySQL 数据库?

html - 如何在一行中使用 perl 的 uri_encode

php - IF/Select 来自表单的 PHP 语句

php - 在 woocommerce 产品页面的价格后添加自定义文本

javascript - 将变量值从一个函数传递到另一个函数