关于JavaScript和安全

About JavaScript and security

本文关键字:安全 JavaScript 关于      更新时间:2023-09-26

我们正在开发一个非常简单的评论系统。我们已经完成了系统,使用PHP和MySQL,没有任何问题。

现在,问题是我们需要把这些表单,放到几个不同的站点,甚至同一个站点的不同位置。

目前我们有以下文件:

  • deliver_com .php:选择前面所有与domain_id匹配的注释

  • ui/deliver_com .php:前一个文件的HTML,它显示了之前的评论和表单本身发送一个新的。

说,我们所想到的,是生成div和表单,使用JavaScript和文档。然后,表单将把信息发送回我们的服务器,由PHP脚本处理并存储到数据库中。

现在,我们主要关注的是,我们如何验证注释确实来自包含脚本的站点?

我知道应该创建类似XSRF令牌的东西来解决这个问题,但是我不得不承认,在逻辑上提供一些帮助将是非常感谢的。

同样,我要提到的是,表单目前有两个隐藏的输入,一个用于识别网站(作为domain_id),另一个用于识别该网站的特定部分(作为file_id)。

一些想法:

在这一刻,我意识到,因为我们在HTML中使用PHP变量,它将是方便的使用JavaScript,只生成一个iframe,其中的信息将被放置。

为了包含XSRF阻止令牌,这个修改也是必要的。通过这样做,我们将避免来自其他网站的评论?我是不是失去了什么?

你应该给每个注释"section"一个id。我们将其命名为"comment_post_id"(就像wordpress一样)。因此,对于每个评论表单,您应该有一个隐藏的输入,在提交评论时给出id。因为你肯定想在下面显示最近的评论,你应该使用php或mysql检查在你的数据库中是否匹配comment_post_id。

如果你想避免利用你的注释函数,你应该使用验证码,因为它们是唯一安全的方法。当然,你可以检查referer ($_SERVER['HTTP_REFERER']),但这不会给你带来实际的好处,因为那些试图利用你的评论系统的人只会放弃一个有效的referer。

可以让初始javascript读取文档。并向您的服务器发出请求,在引用器中暴露他们的IP地址。如果ip地址和域名匹配,则回复表单html和系统生成的密钥,用于所有表单帖子。

function get_ip_address() {
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
        if (array_key_exists($key, $_SERVER) === true) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                    return $ip;
                }
            }
        }
    }
}