XSS 表单安全性


XSS form security

有没有一种通用的方法可以防止表单上的XSS?

我们是否考虑下面的基本示例代码...

.HTML:

<form action="test.php" method="POST">
 <input type="text" name="test">
</form>

.PHP:

function new_test($test) {
    array_walk($test, 'array_sanitise');
    $fields = '`' . implode('`, `', array_keys($test)) . '`';
    $data = '''' . implode(''', ''', $test) . '''';
    $query = mysql_query("INSERT INTO `test` ($fields) VALUES ($data)");
    if (!$query) {
       die('Could not query:' . mysql_error());
    }
}
$test = array(
  'test'     => $_POST['test']
);
new_test($test);

这足以防止SQL注入和XSS漏洞吗?有没有更好的方法?还是没有通用的方法?

  1. 针对 SQL 注入,您应该转义 sql 查询中使用的所有用户输入。或者使用预准备语句/绑定变量。转义:http://uk1.php.net/mysqli.real-escape-string.php,PDO:http://php.net/manual/en/ref.pdo-mysql.php
  2. 针对 XSS,您必须转义向客户端显示的内容。但这取决于您显示的内容和位置。您必须在 html 中使用不同的转义
    • 标签之间,
    • 在标记属性中
    • 在 CSS 中
    • 在JavaScript中

您可以在此处阅读有关XSS不同方法的更多信息:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

我看到你只使用了array_sanitise代码没有添加到问题中,所以很难说它是什么。但根据它的用法,它似乎是某种SQL转义,所以希望它有助于防御SQL注入。希望。