PHP中的干净和安全的字符串[重复]
Posted
技术标签:
【中文标题】PHP中的干净和安全的字符串[重复]【英文标题】:Clean & Safe string in PHP [duplicate] 【发布时间】:2011-05-25 23:20:40 【问题描述】:可能的重复:php: the ultimate clean/secure functionWhat's the best method for sanitizing user input with PHP?
我应该在我的函数中添加什么以确保通过它的每个字符串都是“服务器友好的”?我使用这个小函数来检查包含姓名、电子邮件地址和 ID 的输入。
function checkInput($str)
$str = @strip_tags($str);
$str = @stripslashes($str);
$str = mysql_real_escape_string($str);
return $str;
【问题讨论】:
同意佩卡。但是总结一下。没有你想要做的事情。 一切都是上下文相关的。不可能让 1 个功能全部完成。例如,您只想对要进入数据库的数据调用mysql_real_escape_string
。并且您只想在数据被渲染时调用htmlspecialchars
。所以没有灵丹妙药(也不应该有)......
【参考方案1】:
我应该在我的函数中添加什么以确保通过它的每个字符串都是“服务器友好的”?
这应该可行:
function checkInput($str)
return "";
更详细的解释,see here
【讨论】:
不,不是,但我咯咯地笑了:)【参考方案2】:我会删除一些特殊字符,这些字符与此类字符串无关,可用于代码注入,例如 $ % # |等等。
$invalid_characters = array("$", "%", "#", "<", ">", "|");
$str = str_replace($invalid_characters, "", $str);
【讨论】:
【参考方案3】:关于数据库,检查PDO 占位符。它们是跨 DBMS。
【讨论】:
它们还提供了对背后运行的数据库引擎的抽象【参考方案4】:服务器友好是什么意思?
对于电子邮件地址等验证,请查看data filtering。
为了确保字符串对于数据库使用转义是安全的,例如mysql_real_escape_string
输出数据时使用htmlspecialchars
【讨论】:
以上是关于PHP中的干净和安全的字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章