您好关于XSS和PHP的问题......
我正在构建一个PHP应用程序所有输入都是通过客户端进入数据库然后服务器端验证,使用filtervar进行清理......存储在数据库中的加密密码,如果我在scripttag中输入类型 - 无论什么 - 脚本标记它只是存储在数据库中,并且不会对它造成任何伤害。
当直接输出输入时,XSS只是一种威胁,并且唯一使用htmlentities的时间是从用户输出输入数据。
我的应用程序没有这样做,但有一种方法可以让攻击者注入一些恶意代码并导致它被输出,即使我的编程逻辑不允许这样做。
我希望涵盖所有基地.........
期待您的回答......... 是的我正在使用PDO预处理语句,bindParam,执行以防止SQL注入,并将数据安全地存储在数据库中,我也在使用:
if(filter_var($_POST['firstname'], FILTER_SANITIZE_STRING)){
$clean['firstname'] = $_POST['firstname'];
};
对于Sanitization,可以改进............
我刚刚修复了代码,if语句阻止了filter var清理脚本标签,见下文:
$clean = array();
$clean['firstname'] = (filter_var($_POST['firstname'], FILTER_SANITIZE_STRING));
$clean['lastname'] = (filter_var($_POST['lastname'], FILTER_SANITIZE_STRING));
$clean['username'] = (filter_var($_POST['username'], FILTER_SANITIZE_STRING));
现在脚本标签已不在数据库中.........
答案 0 :(得分:1)
如果您使用filtervar正确清理或验证了某些内容,那么您可能在数据库端没有任何问题。有时候很难知道你是否覆盖了所有的基础。您的数据库查询仍应使用参数化查询来保护您。
如果其他用户可以看到任何用户输入,则应正确转义目标内容类型的数据;即使像用户名这样的东西也可能是恶意的。
答案 1 :(得分:0)
如果你展示了一些如何使用filter_var()的代码示例,那就太棒了。但是,一般来说,有些事情需要考虑:
如果您需要特定帮助,请发布代码示例。