The problem with our code is that user
input gets put into a database query in
an unsafe way.
Some text submitted in the forum
ended up being considered as
SQL code instead of as a text value.
But there's another way to
do our query that's safe.
When we execute a query,
we can put a %s in the query text, and
then after it,
a tuple parameter to the execute call.
The database library will
substitute this into the query in
a way that's safe so
this problem will never happen again.
Using what you've just learned,
you can now update forumdb.py to
execute insert queries safely
using query parameters.
Test your work by checking that
you can now make posts with single
quotes in them and
that the SQL injection attack query
doesn't delete the whole forum anymore.
When you're done, press Submit,
then Continue to go on.
تكمن مشكلة تعليمتنا البرمجية في أنه يتم وضع
إدخال المستخدم في استعلام قاعدة بيانات
.بطريقة غير آمنة
وينتهي الأمر ببعض النصوص المرسلة
للمنتدى إلى اعتبارها
.تعليمة SQL برمجية بدلاً من اعتبارها قيمة نصية
لكن توجد طريقة أخرى
.لتنفيذ الاستعلام بطريقة آمنة
،عندما ننفذ استعلامًا
،يمكننا وضع s% في نص الاستعلام
ثم نضع بعدها
.معلمة مجموعة إلى استدعاء التنفيذ
ستحل مكتبة قاعدة البيانات
محل هذه المعلمة في الاستعلام
بطريقة آمنة حتى لا تحدث
.هذه المشكلة مرة أخرى على الإطلاق
،عن طريق استخدام ما تعلمته للتو
يمكنك الآن تحديث forumdb.py
لتنفيذ استعلامات الإدراج بطريقة آمنة
.باستخدام معلمات الاستعلام
اختبر عملك عن طريق التحقق من
إمكانية كتابة منشورات باستخدام علامات
اقتباس مفردة فيها
ومن عدم قدرة هجمات الاستعلامات من خلال حقن SQL
.على حذف المنتدى بالكامل بعد الآن
،وبعد الانتهاء من عملك، اضغط على Submit
.ثم Continue للمتابعة
O problema com o nosso código é que a entrada do
usuário é inserida em uma consulta de banco de dados de
uma forma que não é segura.
Parte do texto enviado no fórum
foi considerada como
código SQL em vez de um valor de texto.
Mas há uma outra maneira
segura de fazer nossa consulta.
Quando executamos uma consulta,
colocamos um sinal de %s no texto da consulta, e
depois disso,
um parâmetro de tupla para executar a chamada.
A biblioteca do banco de dados
substituirá isso na consulta de
uma forma segura para que
esse problema nunca mais aconteça.
Usando o que acabou de aprender,
agora você pode atualizar o forumdb.py para
executar consultas insert de forma segura
usando parâmetros de consulta.
Teste seu trabalho, verificando se
agora você pode fazer postagens com aspas
simples e
se a consulta de ataque de injeção SQL
não mais exclui o fórum inteiro.
Quando tiver terminado, pressione Submit,
e Continue para prosseguir.
我们代码的问题在于 在把用户输入的内容放入数据库的请求语句中时
采用了不安全的方式
某些贴子里的文字被当成了
SQL 代码 而不是单纯的文本值
我们还有另一种方法 可以让我们做出安全的请求语句
当我们执行请求语句时 我们在语句文本中用 %s 通配符
之后 用一个元组参数来执行这个调用
数据库会将其替换进请求语句
它会使用一种安全的方法 来避免这种问题再次发生
利用你刚刚学到的 就可以更新 forumdb.py
来利用请求变量安全地执行插入请求
要测试你的结果 可以发一条贴子试验
把单引号放进去
也可以做 SQL 注入攻击 这次就不会把论坛都删完了
完成任务后 点击提交和继续