zoukankan      html  css  js  c++  java
  • HUSTOJ搭建后为了方便作为Judger调用进行的一些修改操作

    这里的操作主要包括:

    1. 找到初始的MySQL数据库用户名和密码;
    2. 将 csrf 设置为固定值;
    3. 取消掉同一用户相邻提交时间间隔需要10秒钟的限制。

    内容如下:


    使用如下命令即可将hustoj下载安装到本地:

    wget https://github.com/zhblue/hustoj/raw/master/trunk/install/install-ubuntu18.04.sh
    sudo bash install-ubuntu18.04.sh
    

    这需要一段时间。
    安装好之后首先以用户名 admin 密码 admin123 注册一个用户。
    然后查看 /home/judge/etc/judge.conf 文件可以发现里面有一些数据:

    ...
    OJ_USER_NAME=debian-sys-maint
    OJ_PASSWORD=zRqrwJIMreGPLD4N
    OJ_DB_NAME=jol
    ...
    

    其中 OJ_USER_NAMEOJ_PASSWORDOJ_DB_NAME分别对应你MySQL数据库的用户名、密码和数据库。

    对于每一个问题,比如编号为 1000 的问题,他的数据是存放在 /home/judge/data/1000/ 目录下的。

    修改csrf.php

    原始的 `` 文件是这样的:

    <?php
      require_once("include/db_info.inc.php");
      require_once("include/my_func.inc.php");
      $token = getToken();
      if(!isset($_SESSION[$OJ_NAME.'_'.'csrf_keys'])){
    	$_SESSION[$OJ_NAME.'_'.'csrf_keys']=array();
      }
      array_push($_SESSION[$OJ_NAME.'_'.'csrf_keys'],$token);
      while(count($_SESSION[$OJ_NAME.'_'.'csrf_keys'])>10) 
    	array_shift($_SESSION[$OJ_NAME.'_'.'csrf_keys']);
      
    ?><input type="hidden" name="csrf" value="<?php echo $token?>" class="<?php echo in_array($token,$_SESSION[$OJ_NAME.'_'.'csrf_keys'])?>">
    

    直接修改成:

    <?php
    ?><input type="hidden" name="csrf" value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" class="<?php echo in_array($token,$_SESSION[$OJ_NAME.'_'.'csrf_keys'])?>">
    

    然后我们每次输csrf值都为 32个a 就可以了: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    默认开机不启动nginx,所以要在命令行输入如下命令启动nginx服务器:

    sudo nginx
    

    默认如果提交台频繁的话,会报错:“You should not submit more than twice in 10 seconds”
    所以我们要去掉这个限制,解决办法是修改 src/web/submit.php 文件,将其中的代码段:

    if (count($res)==1){
    	
    		$view_errors="You should not submit more than twice in 10 seconds.....<br>";
    		require("template/".$OJ_TEMPLATE."/error.php");
    		exit(0);
    	
    }
    

    注释掉,即变成:

    // if (count($res)==1){
    	
    // 		$view_errors="You should not submit more than twice in 10 seconds.....<br>";
    // 		require("template/".$OJ_TEMPLATE."/error.php");
    // 		exit(0);
    	
    // }
    
  • 相关阅读:
    提高ASP.NET效率的几个方面
    危险字符过滤的类
    通过HttpModule实现数据库防注入
    字符串(含有汉字)转化为16进制编码进制
    C# 中的类型转换
    防范SQL注入攻击的代码
    微软笔试小感
    Debug和Trace配置小记
    C#动态地调用Win32 DLL中导出的函数
    Debug和Trace使用小记
  • 原文地址:https://www.cnblogs.com/zifeiy/p/11006529.html
Copyright © 2011-2022 走看看