1.Django CSRF的原理

CSRF(Cross Site Request Forgery)也就是跨站请求伪造,实现的原理是CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的;

2.CSRF认证

  • 在项目的settings文件中有一个配置项MIDDLEWARE,表示默认Django启用csrf认证;

'django.middleware.csrf.CsrfViewMiddleware'
  • 当页面为form表单提交时,一般都需要在form标签中加上 {% csrf_token %} ,如果第一次表单提交的时候带上了 csrf_token 服务器端就会认为这个是可信任的用户,所以如果第二次提交时form表单去掉 csrf_token ,但是浏览器请求时会带上之前表单第一次提交时中的 csrf_token ,服务器端默认信任这个 csrf_token 

<form action="{% url 'users:image' %}" method="post" enctype="multipart/form-data">
{#  <input type="file" name="upload" accept="image/gif, image/jpeg, image/png, image/jpg">#}
    <input type="file" name="upload">
    <input type="submit" value="提交">
    {% csrf_token %}
</form>
  • 如果在settings文件中将csrf的中间件注释,那么form表单提交,将不再需要csrf token认证;

3.CSRF局部禁用

  • 为了避免没有csrf token而产生的403的forbidden错误问题,通常使用 django.views.decorators.csrf.csrf_exempt 装饰器来修饰这个处理POST请求的View, 这种方式是CSRF局部禁用;

from django.views.generic import Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_exemptclass CSRFTestView(View):    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)    def post(self, request):
        pass
  • 局部启用可以使用 csrf_protect ,需要先在settings文件注释 CsrfViewMiddleware 

from django.views.generic import Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_protectclass CSRFTestView(View):    @method_decorator(csrf_protect)
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)    def post(self, request):
        pass
  • 如果需要禁用Django CSRF功能项目都是启用全局的CSRF中间件,针对局部的View进行禁用;

4.Postman

Postman是一种网页调试与发送网页http请求的chrome插件,可以用来很方便的模拟get、post、put、patch、delete、copy等多种方式的请求来调试接口;
postman可用作macOS,Windows和Linux操作系统的本机应用程序。Windows系统下安装postman只需要下载安装文件,然后运行安装程序就可以了;

Django 启用和禁用CSRF功能

Postman的下载地址 : https://www.getpostman.com/downloads/


所有已安装的PHP模块配置文件都可以在/ etc / php / PHP_VERSION / mods-available目录下找到,可以看到扩展名为.ini的文件数量。首先必须安装特定的PHP模块,因为使用之前需要先启用它们。php公共包提供以下命令来管理php模块。

phpenmod–用于在php中启用模块

phpdismod–用于禁用php中的模块

phpquery–用于查看php模块的状态

有三种类型的SAPI(服务器API)可用,最常用的是CLI、FPM、Apache2。可以使用-s开关定义SAPI ,仅启用/禁用模块。

启用PHP模块

使用phpenmod命令,后跟module name,在系统上启用特定的php模块。在下面的示例中,第一个命令是一个示例,第二个命令将为所有安装的PHP版本和所有SAPI启用mbstring模块。

### Syntax$ phpenmod MODULE_NAME### Enable mbstring php module$ phpenmod mbstring

还可以使用-v开关定义PHP版本以启用特定模块。使用它 将为所有SAPI启用模块。

### Syntax$ phpenmod -v <PHP VERSION> <MODULE NAME>### Enable module for specific php version$ phpenmod -v 5.6 mbstring$ phpenmod -v 7.2 mbstring

使用-sswitch定义SAPI,以便为所有PHP版本的特定SAPI启用特定模块。

### Syntax$ phpenmod -s <SAPI> <MODULE NAME>### Enable module for specific SAPI$ phpenmod -s cli mbstring$ phpenmod -s fpm mbstring$ phpenmod -s apache2 mbstring

还可以为更具体的更新定义php版本和sapi。

禁用PHP模块

可以使用phpdismod命令从系统中禁用任何不必要的php模块。例如,对所有PHP版本和所有SAPI禁用mbstring模块。

$ phpdismod mbstring

要禁用特定PHP版本的任何模块,请使用如下命令。

$ phpdismod -v 7.2 mbstring

要在所有PHP版本上禁用特定SAPI的任意模块,请使用如下命令。

$ phpdismod -s apache2 mbstring


有关oracle中怎么启用和禁用受限会话模式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

启用和禁用受限会话模式:

如果需要在数据库处于open模式下执行维护操作,同时保证此时其他用户不在数据库上建立连接和执行任务,

Alter system enable restricted session;

Alter system disable restricted session

设置显示模式set pagesize 30 linesize 120;

管理会话:

Saddr 会话的地址;

Sid 会话标示;

Serial# 会话的序列号;

User# 数据库用户的标示符;

Username 数据库用户的名称;

Command 正在处理的语句就是最近一次分析的语句;

Status 会话当前的状态;

Schema# 方案用户的标示符;

Schemaname 方案用户的名称;

Osuser 操作系统用户的名称;

Process 操作系统客户机进程;

Machine 操作系统的主机;

Terminal 操作系统的终端;

Program 操作系统程序名称;

Type 会话的类型;

Action 正在执行操作的名称;

使用alter system语句管理会话

可以使用alter system kill session sidserial#’来中断会话。


ORACLE中alter system kill session怎么实现立即结束一个会话,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ORACLE中alter system kill session怎么实现立即结束一个会话”这篇文章吧。

一般情况下,在杀掉一个会话的时候,直接执行alter system kill session ‘sid,serial#’; 随后进行查询发现,被KILL掉的会话状态变为KILLED状态,并没有立即结束,稍后再次查询该会话,确认已经结束。如果希望立即结束一个会话,如何处理?

经过查询ORACLE DOC得知
ORACLE DOC:
The KILL SESSION clause lets you mark a session as terminated, roll back ongoing transactions, release all session locks, and partially recover session resources. To use this clause, your instance must have the database open. Your session and the session to be terminated must be on the same instance unless you specify integer3.
If the session is performing some activity that must be completed, such as waiting for a reply from a remote database or rolling back a transaction, then Oracle Database waits for this activity to complete, marks the session as terminated, and then returns control to you. If the waiting lasts a minute, then Oracle Database marks the session to be terminated and returns control to you with a message that the session is marked to be terminated. The PMON background process then marks the session as terminated when the activity is complete.
IMMEDIATE Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.

当session是active的时候,alter system kill session 只是将session标识为killed状态,并不会释放session持有的资源,所以我们在执行完alter system kill session 后,看会话还是一直存在,等待PMON进程回收资源和释放锁等。

如果:
不加IMMEDIATE,仅仅是标记该事务为中断,等待PMON进程来回收该SESSION所占用的资源及释放锁等;
加IMMEDIATE, 即在alter system kill session 'sid,serial,@sid' 后增加 immediate来实现立即结束会话。


1、 在主界面命令框中,输入SE11    (T-CODE)

2、输入"简短描述",在“交付和维护”视图,选择“交付类”为A或C ,权限一般选择“允许选择/维护”

A应用表不进行传输,C自定义表可以传数据到其它系统;

3、在“字段”视图,输入要建立的字段,选择数据元素或数据类型

  自定义的数据元素和域,要以Z/Y开头;

4、点“激活”按钮(类似手电的图标),会弹出窗口,提示要选择保存的“包”名。可以通过Z*模糊查询;

5、产生请求号,点对勾继续 

6、定义技术设置,数据类一般选择"APPL0"或”APPL1",大小类别根据表的实际,可选择任一数字,表示容纳的记录条数;

7、然后点"保存“图标,返回主窗口,对激活时弹出的提示框,如果是黄色的内容可以忽略;

8、点击”实用程序“--”表维护生成器“,填权限组、函数组、维护类型、屏幕编号等信息

9、点”生成“图标,按默认的参数点保存;连续点击4个”保存“图标完成创建;

 

 


下面是查看新建表的样式,添加内容看一下;

10、可以输入SM30       (表维护器命令),

       MANDT是后台保存(集团号),前台默认不显示

11、点”新条目“录入新的数据;输入测试数据,点”保存“

 

12、如果要从后台查看表的数据,输入”SE16",选择刚创建的表,

系统显示表的实际内容,这时可以看到MANDT存的是000