已经了解AES是首选的加密方法,如果可能的威胁在脚本小子级别上,是否应该重写使用DES的现有代码?(例如,pkzip密码可以通过非计算机专业人员使用免费实用工具进行破解,DES也是如此?)快速谷歌搜索似乎意味着即使弃用的DES仍然需要超级计算机和大量时间 - 或者有时间改变?
特别是,此CAPTCHA库使用DES加密在视图状态中发送给用户的质询字符串.
我正在使用SimpleCaptcha创建CAPTCHA输入,并验证了Captcha输入.我使用以下代码创建了验证码输入.
HTML代码:
<form action="submit_proceed.do" method="post">
<img src="captchaImg" /><input type="text" name="captcha" value=""><br />
<input type="submit" value="Submit" name="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
JavaServlet代码:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Iterator;
import nl.captcha.Captcha;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
List errorMsgs = new LinkedList();
try{
// Validate Captcha
HttpSession session = request.getSession(true);
String userCaptcha = request.getParameter("captcha");
Captcha captcha = (Captcha) session.getAttribute(Captcha.NAME);
if (!captcha.isCorrect(userCaptcha)) {
errorMsgs.add("Please input the …Run Code Online (Sandbox Code Playgroud) 为什么recaptcha图像的大小固定为300x57?即使在自定义注入图像的div时,div的宽度和高度也会被覆盖并设置为300x57.当然,图像可以在渲染后重新调整大小,但为什么没有选项来生成开发人员希望的大小的图像.
http://code.google.com/apis/recaptcha/docs/customization.html
reCAPTCHA将依赖具有以下ID的HTML元素的存在来向用户显示CAPTCHA:具有ID recaptcha_image的空div.这是放置实际图像的位置.div将是300x57像素
谢谢
simple_captcha可以在我的开发机器上找到,但它不在我的共享托管服务器(Dreamhost)上.
安装了ImageMagick,RMagick就可以了.可能有什么不对?
我检查了日志,但没有显示任何错误消息.
Started GET "/simple_captcha/0245065ca02e2f4fadc22b3f08e1357ea74221f8?time=1304535698" for 99.122.173.225 at Wed May 04 12:01:38 -0700 2011
Run Code Online (Sandbox Code Playgroud)
当我输入地址(/ simple_captcha/0245065ca02e2f4fadc22b3f08e1357ea74221f8?time = 1304535698)时,它表示"图像无法显示,因为它包含错误".
知道什么是错的吗?
谢谢.
山姆
我正在使用强力检查器构建登录脚本,当触发时,将显示reCAPTCHA.我遇到的问题是,当输入正确的用户名/密码/验证码响应时,登录脚本会运行,但直到大部分页面内容已加载(这在提交表单后发生).结果是我必须按F5刷新页面并重新提交表单数据,以便在页面开始加载时会话处于活动状态.
现在,我遇到的问题是,一旦表单被提交(当它需要CAPTCHA时),会话直到index.php到达时才开始
else {
$captchaResponse = 1;
$auth = Auth::verifyPass($userName,$password,$captchaResponse);
}
Run Code Online (Sandbox Code Playgroud)
我很难过如何重新组织这个,以便会话在此之前开始.有任何想法吗?
第一部分是index.php页面,其中包含在检测到强力尝试时触发的代码.代码的这一部分以条件if开头($ auth ==="bruteForce")此代码显示reCAPTCHA并且应该提交用户名,密码和reCAPTCHA响应代码(0-错误响应,1-correct response)返回登录功能.
<?php
include('includes/header.php');
spl_autoload_register(function ($class){
include 'includes/class.' . $class . '.php';
});
if(null !==(filter_input(INPUT_POST,'userName'))){$userName = filter_input(INPUT_POST,'userName');}
if(null !==(filter_input(INPUT_POST,'password'))){$password = filter_input(INPUT_POST,'password');}
if(isset($userName)&& isset($password)){
$auth = Auth::verifyPass($userName,$password);
}
if(isset($_GET['logout']) && $_GET['logout'] == true){
session_start();
session_destroy();
setcookie ("PHPSESSID", "", time() - 3600, "/");
header("Location: index.php");
}
if(Auth::checkLoggedIn() === true){
if(session_id() !== ''){echo 'Session ID is not blank<br />';}
echo '<a href="index.php?logout=true">Logout</a><br />';
echo 'Welcome! This is protected content!' …Run Code Online (Sandbox Code Playgroud)假设我有一个iOS/Android应用程序,它依赖于自定义REST API来处理帐户管理(注册,登录,密码重置,获取/设置用户相关数据)等事务.
没有什么好方法可以保证我的API只能通过我的移动应用程序调用.Oauth2等在客户端代码中具有"秘密" - 可以很容易地进行逆向工程.
假设我有一个这样的API调用:
https://www.myapi.com/register_user?username=UUU&password=PPP&email=EEE
(当然,不是那样,但你明白了)
这将创建一个新用户,然后所有API调用将包含会话令牌或将API调用与具有帐户的特定应用程序用户相关联的内容.
第一次注册是唯一一个没有受到任何保护的注册,而我担心的是恶意的人从PC脚本中调用它1,000,000次以创建大量虚假用户,特别是使用真实的电子邮件地址.拥有这些地址的用户将无法使用该应用.
那么如何保护第一个API调用以防止大规模滥用呢?我正在考虑在用户注册表单中包含一个经过服务器验证的适合移动设备的CAPTCHA.
同样,所有后续API调用都受到会话令牌和每个用户监控的API调用计数的保护(可疑的被阻止).
那有意义吗?我是不是太复杂了?非常感谢
PS:似乎其他有趣的替代方案包括使用电子邮件验证或像谷歌这样的稳固的第三方身份提供商 - 这3个选项都不是完美的.无论如何,对围绕这个问题的讨论感兴趣.
我正在使用PhantomJS和CasperJS来自动完成我的一些任务.在其中一项任务中,我需要在实际处理任务之前手动提供验证码字符串.对于这个问题,我能想到的是捕获网页的屏幕截图,然后手动检查捕获的图像并将验证码字符串保存到文本文件中.之后,我可以使用CasperJS中的文件系统模块读取该值并继续执行该过程.我想知道做这种任务的最佳方法是什么.
我在自定义联系人模块中收到了无效的CAPTCHA操作ID异常.我设法显示验证码,但模型验证规则会抛出无效的操作ID异常.以下是我的代码:
联系我们/控制器/ DefaultController.php
class DefaultController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'actions' => ['captcha','index'],
'allow' => true,
],
]
]
];
}
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionIndex()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->contact(setting::ADMIN_EMAIL_ADDRESS)) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh(); …Run Code Online (Sandbox Code Playgroud) 我目前使用隐形验证码,如果它认为用户是机器人,它会自动显示验证码。
现在有了 Recaptcha v3,我很难理解它应该如何使用。
它返回一个分数,但是如果分数很低,这可能表明用户是机器人怎么办。然后我应该通过调用一些函数来显示图形验证码吗?或者我应该简单地弹出一个对话框,验证码认为你是一个机器人,仅此而已?
所以我不明白的是:如果用户得分低会发生什么?用户有没有办法继续解决验证码?还是到了路的尽头,就没有办法继续前行了?
是否/可以 recaptcha v3 显示图形验证码来解决?
Google Recaptcha V3免费套餐的服务限制配额为每秒 1000 次调用或每月 100 万次请求。否则,如果应用程序超出这些限制,则 google 会向网站所有者发送警告,要求其迁移到 Recaptcha V3 Enterprise。
我检查了 Recaptcha V3 管理面板,它显示了一些分析,其中一项分析是“请求总数”,它显示我收到了大约200 万个请求。
我的问题:
谢谢。