我正在努力使我的 PHP 尽可能安全,我试图避免的两个主要问题是
- mySQL 注入(inject)
- 跨端脚本 (XSS)
这是我针对 mySQL 注入(inject)得到的脚本:
function make_safe($variable) {
$variable = mysql_real_escape_string(trim($variable));
return $variable; }
http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/
针对 XSS,我发现了这个:
$username = strip_tags($_POST['username']);
现在我想将两者合并为一个函数。这是最好的方法吗? :
function make_safe($variable) {
$variable = strip_tags(mysql_real_escape_string(trim($variable)));
return $variable; }
或者 mysql_real_escape_string 是否已经阻止了 XSS?最后,还有什么我可以添加到此函数中以防止其他形式的黑客攻击的吗?
最佳答案
mysql_real_escape_string()不会阻止 XSS。它只会让 SQL 注入(inject)变得不可能。
要对抗XSS,你需要使用htmlspecialchars()或 strip_tags() .第一个将转换特殊字符,如 <
至<
这将显示为 <
,但不会被执行。第二个就是去掉所有标签。
我不建议使用特殊功能来执行此操作,甚至不建议使用一个功能来完成所有操作,但是您给出的示例会起作用。我假设。
关于php - 一个防止 SQL 注入(inject)和 XSS 的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857817/