XSS形成安全性

时间:2014-12-27 10:33:58

标签: php forms xss sql-injection

是否有一种通用的方法来阻止表单上的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 个答案:

答案 0 :(得分:2)

  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中使用不同的转义
      标签之间
    • 标签属性中的
    • in css
    • in javascript
    • ...
  3. 您可以在此处详细了解XSS的不同方法:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

    我发现您只使用了array_sanitise,其代码未添加到问题中,因此很难说它是什么。但基于它的用法,它似乎是某种SQL转义,所以希望它有助于防止SQL注入。希望。