Lon*_*ler 14 php mysql xss sql-injection
我想让我的PHP尽可能安全,我想避免的两个主要问题是
这是我针对mySQL注入的脚本:
function make_safe($variable) {
$variable = mysql_real_escape_string(trim($variable));
return $variable; }
Run Code Online (Sandbox Code Playgroud)
http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/
针对XSS,我发现了这个:
$username = strip_tags($_POST['username']);
Run Code Online (Sandbox Code Playgroud)
现在我想把两者合二为一个函数.这是最好的方法吗?:
function make_safe($variable) {
$variable = strip_tags(mysql_real_escape_string(trim($variable)));
return $variable; }
Run Code Online (Sandbox Code Playgroud)
或者mysql_real_escape_string是否已经阻止了XSS?最后,还有什么我可以添加到此功能,以防止其他形式的黑客攻击?
Joh*_*ica 13
这个功能:
function make_safe($variable)
{
$variable = strip_tags(mysql_real_escape_string(trim($variable)));
return $variable;
}
Run Code Online (Sandbox Code Playgroud)
不管用
SQL注入和XSS是两种不同的野兽.因为他们需要不同的逃避,你需要使用的每个逃生功能strip_tags
和mysql_real_escape_string
separatly.
加入他们会破坏每个人的安全.
mysql_real_escape_string()
在将数据输入数据库时使用标准.在将数据输出到屏幕之前查询数据库时
使用strip_tags()
.
为什么结合这两个功能是危险的
从马口:http://php.net/manual/en/function.strip-tags.php
由于strip_tags()实际上不验证HTML,因此部分或损坏的标记可能导致删除比预期更多的文本/数据.
因此,通过将格式错误的html输入到数据库字段中,智能攻击者可以使用您的天真实现来击败mysql_real_escape_string()
您的组合.
daG*_*vis 11
mysql_real_escape_string()不会阻止XSS.只能进行SQL注入是不可能的.
要对抗XSS,您需要使用htmlspecialchars()或strip_tags().1st将转换<
为<
将显示为的特殊字符<
,但不会执行.第二个只是删除所有标签.
我不建议使用特殊功能来执行此操作,甚至不要使用一个功能来完成所有操作,但您的示例可以正常工作.我假设.