php - 一个防止 SQL 注入(inject)和 XSS 的 PHP 函数

标签 php mysql xss sql-injection

我正在努力使我的 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() .第一个将转换特殊字符,如 <&lt;这将显示为 < ,但不会被执行。第二个就是去掉所有标签。

我不建议使用特殊功能来执行此操作,甚至不建议使用一个功能来完成所有操作,但是您给出的示例会起作用。我假设。

关于php - 一个防止 SQL 注入(inject)和 XSS 的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857817/

相关文章:

php - 构建mysql php倒计时功能时的输出格式

php 代码显示在网页上而不是在幕后工作

php - 如何在一个表中连接具有多行的两个表?

php - 如何在 PHP 中转义隐藏的表单值

mysql - 这个SQL有什么问题

javascript - 替代子空间以在 iframe 之间进行安全的跨域通信?

javascript - Handlebarsjs "smart"转义

security - 在 Web 开发期间,我将花费多少时间在用户输入验证上?

php - Modal 将计数器重置回 1

php - 从字符串在调用函数中创建局部变量