学习完最大的收获是学会了怎样用firebug调试js脚本,十分强大^_^
It is always a good practice to validate all input on the server side. Leaving the mechanism for validation on the client side leaves it vulnerable to reverse engineering. Remember, anything on the client side should not be considered a secret.
此课的目标:
步骤一、通过发现一个优惠券code来适用零费用买到商品。
firebug获取该页面的js代码:
<script language="JavaScript" src="javascript/clientSideValidation.js"></script>
方法一:适用firebug在JavaScript上设置断点进行调试
观察js代码发现了coupons数组,调试js可以观察得到coupons数组进行加密decrypted = decrypt(coupons[i]);后所
得到的coupon code
选择js文件
设置断点(左键添加,右键为设置断点进入条件,必须设置进入条件,否则不能进入断点),断点进入条件为i<coupons.length,并点击"Break on next"按钮
在coupon code输入任意字符(这里如果手快可以输入多个字符),激发onkeyup="isValidCoupon(field1.value)" 事件
然后使用F10或F11进行逐段或逐句调试
在右边栏查看this里caesar的值,即为客户端存储的coupons数组经过decrypt()函数得到的coupon code
对应的可用优惠券即为:PLATINUM、GOLD(上图所示)、SILVER、BRONZE、PRESSONE、PRESSTWO、PRESSTWO
使用上述优惠券即可成功以低价买进。
方法二:利用浏览器地址栏可以直接执行js代码的特性,在地址栏输入
javascript:alert(decrypt("sfwmjt"));
其中sfwmjt为coupons数组中的元素,通过decrypt函数可以计算得到优惠券代码SILVER。
步骤二:主要是通过firebug查找并修改GRANDTOT这个input的readonly属性,则选择完商品后得到的总价格在没有只读属性时可以被任意修改,篡改为0,即可buy FOR FREE!