我的信用卡页面安全吗?保障查询

时间:2012-11-08 15:09:47

标签: security logic checkout

https:xyz dot com / authenticate / cc.php

这是我注册的第3页....我的会员输入他们的信用卡。这与我的authorize.net帐户绑定。

我最近注意到的一件事是这个页面可以通过输入URL自己访问..没有必要的pre-url导致它。这似乎不安全,但无论是否有人想滥用它,他们都可以通过注册程序并继续提交错误的CC号码。花费我的钱吗?

我不记得我们是否对它施加了IP限制,或者如果它甚至是100%保护的话。 我很确定我们做了一些事情,如果他们输入带有他们号码的万事达卡(暂时存储)并且它被发回作为无效,它将匹配,并且不允许他们继续输入错误的16位数字。 我是否应该在没有特定页面的情况下访问页面,从而允许访问并担心IP限制?有人不能只是继续切换他们的IP并提交不正确的CC或假的那个页面吗?

考虑到我/丢失我的商家帐户可能是有风险的人,保护此页面的正确方法是什么?

提前谢谢

1 个答案:

答案 0 :(得分:0)

奇怪的是,您可以直接访问流程的第3步,其他所有数据,如用户名,地址,......?

这是我要做的一些想法,一个完全安全的系统(可能不存在)会比我简单的步骤复杂得多。

注意您可能希望首先允许用户注册一些信息,您可以知道他们是谁(已验证的电子邮件,已验证的电话号码等)然后,只有这样,你做信用卡的事情,如果他们连续输入错误或无效的数字,你可以做其他事情,如黑名单,打电话,侮辱他们等等。

note 2 我花了很长时间写这篇文章,我读的越多,想一想,它看起来就越糟糕,但是因为它已经写好了我还是会发布它

开始之前的一些注意事项:

  • 只有一个地址,例如/authenticate/auth.php
  • 该过程具有"状态"并且根据这一点,它将显示/做不同的事情。
  • 对于不同的州,还有其他额外的文件包含,具体取决于州。
  • 在流程开始后,会话创建并与用户IP,流程状态以及有关用户的任何其他可识别信息相关联,例如' User-Agent',此数据保存在服务器
  • 似乎你想用不同的页面显示不同的状态,所以它会是这样的。但实际上我会在一个页面中使用ajax调用。
  • 有可疑IP地址的 NO 黑名单(太多正常或错误或完全错误的请求),如果需要可以添加,但复杂性会增加。你可能会或可能不想这样做,也许一个capcha就够了,但是......
  • 在某些情况下, NO capcha可能会有所帮助,但我在此描述的会话处理可能需要更改。
  • 您可能想要执行电子邮件验证。

让我们说过程状态是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),它会延迟会话的创建,直到我们确定用户想要做一些真实的事情。

它有几个问题:

  • 某些用户(或程序)在没有会话但是使用' user_name'的情况下连续发送请求,因此强制您始终检查用户是否有效,并可能减慢速度。使用几种不同的技术可以避免这种情况,例如使用capcha或黑色列出一些IP一段时间。
  • 一个用户可能会使用' user_name'哪个不存在,但是他很慢并且需要一些时间来完成这个过程,而这种情况正在发生,第二个用户开始并使用相同的' user_name'完成该过程,所以当第一个用户即将完成,它将在最后一步失败。这可以通过几种不同的技术来避免,这些技术可以作为一种练习。
  

3如果有此请求的会话信息(这是上一步的 else

     

3.1如果referer不是此页面或存储在服务器中的IP与当前请求不同或某些其他数据(如User Agent)不同或状态无效(不在状态列表中),请删除来自请求的会话ID(以便浏览器删除它)并显示' ask_name.php'额外通知"看起来你的设备已经改变!!!"。的

     

3.2'包括' 州的页面

     

3.2.1如果参数传递且正确,请将状态设置为 the-next-state 并显示该页面。如果是最后一个州做了适合最后一个州的事情。的

     

3.2.2显示此状态的相同页面,并显示错误消息供用户重试。的

最后一步尝试确保请求不是来自不同的计算机和/或被盗的会话密钥。