php - 提交表单时在php中结合strip_tags和mysql_real_escape_string

标签 php

Possible Duplicate:
Does mysql_real_escape_string() FULLY protect against SQL injection?




在我的页面中,我创建了一个表单,我想做的是在php编码中发布字段值时,我想同时使用strip_tagsmysql_real_escap_string作为:

$res = stript_tags(mysql_real_escape_string($_POST['name']));


上面的编码对于安全提交输入字段名称是否正确,或者在提交时会造成任何问题?

最佳答案

就其本身而言,这应该可以正常工作。但就我个人而言,我建议您完全不要使用mysql_real_escape_string。我相信我以为您正在使用mysql_*扩展名是正确的,此扩展名已被弃用。帮自己一个忙,切换到PDOmysqli_*,最好是PDO。

这些是更现代的扩展,支持针对几个链接的预准备语句see my answer here。另外,请参见Bobby tables关于为何准备好的语句比手动转义数据安全得多的选择。

正如@ phant0m所说:mysql_real_escape_string的使用不是完全可靠的(请参阅他的评论中的链接)。使用strip_tags尤其是stripslashes之类的功能时也有一些陷阱:当处理数据时,在某些时候数据包含诸如Foo\'s Bar之类的东西并非不可想象,而且正如文档所说:


如果magic_quotes_sybase处于打开状态,则不会去除反斜杠,而是将两个撇号替换为一个。


尝试弄清楚stripslashes(mysql_real_escape_string($data));的结果将是...

使用strip_tags时,请务必注意,允许的标记将保留其属性,其中可能包含斜杠,冒号,分号,破折号,引号以及您不希望看到的使您混乱的其他字符……对于strip_tags还有更多可能的问题,请看at this post

关于php - 提交表单时在php中结合strip_tags和mysql_real_escape_string ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604832/

相关文章:

php - googlemaps 文档类型错误

PHP使用通配符搜索数组?

php - 依赖 ORM 实体上的服务自动注册错误

php - 如何在PHP中检查它是普通字符串还是二进制字符串?

javascript - 将单元格值显示到 HTML 表 MySQL 数据的文本框中

php - 在 WooCommerce 4.5+ 中隐藏或编辑 "You cannot add another ' xxx' to your cart”错误消息

php - Mysql 动态范围值

php - Laravel 多对多自引用表只能以一种方式工作

javascript - 替换现有的 HTML 元素?

php - 如何允许 php 文件仅由站点调用,而不是通过 Inspect Element 或 URL 调用