https:xyz dot com / authenticate / cc.php
这是我注册的第3页....我的会员输入他们的信用卡。这与我的authorize.net帐户绑定。
我最近注意到的一件事是这个页面可以通过输入URL自己访问..没有必要的pre-url导致它。这似乎不安全,但无论是否有人想滥用它,他们都可以通过注册程序并继续提交错误的CC号码。花费我的钱吗?
我不记得我们是否对它施加了IP限制,或者如果它甚至是100%保护的话。 我很确定我们做了一些事情,如果他们输入带有他们号码的万事达卡(暂时存储)并且它被发回作为无效,它将匹配,并且不允许他们继续输入错误的16位数字。 我是否应该在没有特定页面的情况下访问页面,从而允许访问并担心IP限制?有人不能只是继续切换他们的IP并提交不正确的CC或假的那个页面吗?
考虑到我/丢失我的商家帐户可能是有风险的人,保护此页面的正确方法是什么?
提前谢谢
答案 0 :(得分:0)
奇怪的是,您可以直接访问流程的第3步,其他所有数据,如用户名,地址,......?
这是我要做的一些想法,一个完全安全的系统(可能不存在)会比我简单的步骤复杂得多。
注意您可能希望首先允许用户注册一些信息,您可以知道他们是谁(已验证的电子邮件,已验证的电话号码等)然后,只有这样,你做信用卡的事情,如果他们连续输入错误或无效的数字,你可以做其他事情,如黑名单,打电话,侮辱他们等等。
note 2 我花了很长时间写这篇文章,我读的越多,想一想,它看起来就越糟糕,但是因为它已经写好了我还是会发布它
开始之前的一些注意事项:
让我们说过程状态是ask_name,ask_address,ask_cc等......
因此,当对auth页面(/authenticate/auth.php)有任何请求时,我们可以这样做:
1如果' Referer'不是来自其中一个可能的流程启动器(主页等)或此页面(/authenticate/auth.php),我们重定向到主页面。的端强>
这第一步避免了人们直接写入地址或来自不受信任的页面。
2如果此请求没有会话信息:
2.1如果有' user_name'参数AND' Referer'是这个页面(/authenticate/auth.php)
2.1.1如果该用户名已经注册,则显示(包括,不是重定向)' ask_name.php'附加通知"用户已注册"。的端强>
2.1.2为该用户创建会话,将其与IP,用户代理等链接,以及其他数据。
2.1.3将状态设置为ask_address(第二个)并显示' ask_address.php'。的端强>
2.2其他(没有参数或' Referer'错误)
2.2.1显示' ask_name.php'。的端强>
第二步显示第一个屏幕(ask_user)或第二个屏幕(ask_name),它会延迟会话的创建,直到我们确定用户想要做一些真实的事情。
它有几个问题:
3如果有此请求的会话信息(这是上一步的 else )
3.1如果referer不是此页面或存储在服务器中的IP与当前请求不同或某些其他数据(如User Agent)不同或状态无效(不在状态列表中),请删除来自请求的会话ID(以便浏览器删除它)并显示' ask_name.php'额外通知"看起来你的设备已经改变!!!"。的端强>
3.2'包括' 州的页面:
3.2.1如果参数传递且正确,请将状态设置为 the-next-state 并显示该页面。如果是最后一个州做了适合最后一个州的事情。的端强>
3.2.2显示此状态的相同页面,并显示错误消息供用户重试。的端强>
最后一步尝试确保请求不是来自不同的计算机和/或被盗的会话密钥。